如果不使用MVVM。直接調用GridControl 事件 取當前單擊某一列的值。
如果在MVVM中那么則使用Command 。通過Command傳遞參數等 就比以往的直接調用事件復雜。。
需求:
在點擊 GridConrol的時候 下面值跟着變化。。主要是通過鼠標 RowDoubleClick 和鍵盤 Enter 時 調用Command
MVVM:

<UserControl.Resources> <!--數據模板--> <DataTemplate x:Key="RowDetailTemplate"> <GroupBox Grid.Row="3" Header="用戶基本信息"> <Grid > <Grid.ColumnDefinitions> <ColumnDefinition Width="300*" /> <ColumnDefinition Width="300*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="37*" /> <RowDefinition Height="46*" /> <RowDefinition Height="44*" /> </Grid.RowDefinitions> <TextBlock Height="23" HorizontalAlignment="Left" Margin="7,8,0,0" Text="用戶編號:" VerticalAlignment="Top" /> <TextBlock Grid.Column="1" Height="23" HorizontalAlignment="Left" Text="用戶名稱:" VerticalAlignment="Center" /> <TextBlock Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="7,19,0,0" Text="用戶角色:" VerticalAlignment="Top" /> <TextBlock Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="199,18,0,0" Text="用戶性別:" VerticalAlignment="Top" /> <TextBlock Grid.Column="1" Grid.Row="1" Height="23" HorizontalAlignment="Left" Text="用戶年齡:" VerticalAlignment="Center" /> <!--綁定相關的字段--> <dxe:TextEdit Height="23" Text="{Binding Path=UserCode}" HorizontalAlignment="Left" Margin="64,5,0,0" VerticalAlignment="Top" Width="120" /> <dxe:TextEdit Grid.Column="1" Text="{Binding Path=UserName}" Height="23" HorizontalAlignment="Left" Margin="67,6,0,0" VerticalAlignment="Top" Width="120" /> <dxe:TextEdit Grid.Row="1" Height="23" Text="{Binding Path=UserRole}" HorizontalAlignment="Left" Margin="64,19,0,0" VerticalAlignment="Top" Width="120" /> <dxe:ComboBoxEdit Grid.Row="1" Text="{Binding Path=UserGender}" Height="23" HorizontalAlignment="Left" Margin="256,18,0,0" Name="comboBox1" VerticalAlignment="Top" Width="65"> <dxe:ComboBoxEditItem Content="男" /> <dxe:ComboBoxEditItem Content="女" /> </dxe:ComboBoxEdit> <dxe:TextEdit Grid.Column="1" Text="{Binding Path=UserAge}" Grid.Row="1" Height="23" HorizontalAlignment="Right" Margin="0,0,207,0" VerticalAlignment="Center" Width="120" /> <Button Content="新增" Grid.Row="2" Grid.ColumnSpan="2" Height="23" HorizontalAlignment="Center" Name="btnSave" Margin="-250,0,0,0" VerticalAlignment="Center" Width="75" /> <Button Content="刪除" Grid.Row="2" Grid.ColumnSpan="2" Height="23" HorizontalAlignment="Center" Margin="90,0,0,0" Name="btnDelete" VerticalAlignment="Center" Width="75" /> <Button Content="取消" Grid.Row="2" Grid.ColumnSpan="2" Height="23" HorizontalAlignment="Center" Name="btnCancel" Margin="260,0,0,0" VerticalAlignment="Center" Width="75" /> <Button Content="保存" Height="23" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="-80,0,0,0" Name="button2" VerticalAlignment="Center" Width="75" Grid.Row="2" /> </Grid> </GroupBox> </DataTemplate> </UserControl.Resources> <Grid > <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="250*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!--用於顯示 標題或導航菜單--> <ContentControl Content="{Binding Navigator.View}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalAlignment="Stretch" /> <!--檢索--> <Border BorderBrush="Silver" BorderThickness="1" Height="51" Name="border1" Grid.Row="1"> <StackPanel Orientation="Horizontal"> <Label Content="用戶信息:" VerticalAlignment="Center" HorizontalAlignment="Left" /> <dxe:TextEdit Height="23" Name="textBox1" Width="245" VerticalAlignment="Center"/> <Button Content="檢索" Margin="20,0,0,0" Height="23" HorizontalAlignment="Left" Command="{Binding SelectButtonCommand}" VerticalAlignment="Center" Width="75" /> </StackPanel> </Border> <!--數據列表--> <dxg:GridControl Grid.Row="2" Name="UsersDataGrid" ItemsSource="{Binding Data.Rats}"> <dxg:GridControl.Columns> <dxg:GridColumn Header="用戶編號" FieldName="UserCode"/> <dxg:GridColumn Header="用戶名稱" FieldName="UserName"/> <dxg:GridColumn Header="用戶角色" FieldName="UserRole"/> <dxg:GridColumn Header="用戶姓別" FieldName="UserGender"/> <dxg:GridColumn Header="用戶年齡" FieldName="UserAge" /> </dxg:GridControl.Columns> <dxg:GridControl.View> <dxg:TableView Name="View" AutoWidth="True" AllowPerPixelScrolling="True" ShowGroupPanel="False" AllowFilterEditor="False" ShowGroupedColumns="True" BestFitMode="Smart" BestFitArea="All" ShowHorizontalLines="False" AllowEditing="False" NavigationStyle="Row" AllowHorizontalScrollingVirtualization="False" FadeSelectionOnLostFocus="False" ShowIndicator="False" > <interactivity:Interaction.Triggers> <interactivity:EventTrigger EventName="KeyDown"> <helpers:KeyEventAction Key="Enter" Command="{Binding ShowDataGridCommand}" CommandParameter="{Binding ElementName=View,Path=FocusedRow}"/> </interactivity:EventTrigger> <interactivity:EventTrigger EventName="RowDoubleClick"> <interactivity:InvokeCommandAction Command="{ Binding ShowDataGridCommand}" CommandParameter="{Binding ElementName=View, Path=FocusedRow}"/> </interactivity:EventTrigger> </interactivity:Interaction.Triggers> </dxg:TableView> </dxg:GridControl.View> </dxg:GridControl> <!--顯示定義的數據模板--> <ContentPresenter Grid.Row="3" Content="{Binding Path=View.FocusedRowData.Row, ElementName=UsersDataGrid}" ContentTemplate="{StaticResource RowDetailTemplate}" HorizontalAlignment="Stretch"/> </Grid>

public class UserManageView : ModuleWithNavigator { public UserManageView() { Title = "用戶管理"; } #region Command private void GridCellClick(object sender) { } protected override void InitializeCommands() { ShowDataGridCommand = new SimpleActionCommand(GridCellClick); SelectButtonCommand = new SimpleActionCommand(ButtonCommand); } public ICommand ShowDataGridCommand { get; private set; } public ICommand SelectButtonCommand { get; private set; } void ButtonCommand(object sender) { if (sender == null) return; string value = sender.ToString(); switch (value) { case "Add": DXMessageBox.Show(value, "Caption", MessageBoxButton.OK, MessageBoxImage.Information); break; case "Edit": DXMessageBox.Show(value, "Caption", MessageBoxButton.OK, MessageBoxImage.Information); break; case "Delete": DXMessageBox.Show(value, "Caption", MessageBoxButton.OK, MessageBoxImage.Information); break; case "Check": DXMessageBox.Show(value, "Caption", MessageBoxButton.OK, MessageBoxImage.Information); break; case "Print": DXMessageBox.Show(value, "Caption", MessageBoxButton.OK, MessageBoxImage.Information); break; } } #endregion }
在這里做個備注、、、