【发布时间】:2018-04-10 08:29:08
【问题描述】:
我尝试捕捉 CellEditEnding 事件并获取我的视图模型的行+列号和新值。
我试试这个How do you handle data grid cell changes with MVVM? 但我得到了这个异常
“未找到类型'GalaSoft_MvvmLight_Command'。请确认您 没有缺少程序集引用,并且所有引用程序集 已建成”。我参考了 GalaSoft.MvvmLight.WPF4.dll。
这是我的数据网格:
<DataGrid MaxHeight="600" AutoGenerateColumns="False" VerticalScrollBarVisibility="Auto"
ItemsSource="{Binding BitTestParam,Mode=TwoWay}" GridLinesVisibility="None" RowBackground="{x:Null}" Background="{x:Null}"
BorderThickness="2" BorderBrush="Black" HeadersVisibility="Column" Foreground="Black" FontStyle="Italic" FontWeight="SemiBold">
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellEditEnding">
<i:InvokeCommandAction Command="{Binding CellChangedCommand}" CommandParameter="{Binding}"/>
<!--<GalaSoft_MvvmLight_Command:EventToCommand PassEventArgsToCommand="True" Command="{Binding CellEditEndingCommand}"/>-->
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Header="Input Param" Binding="{Binding InputNames}"/>
<DataGridTextColumn x:Name="InputValuesColumn" Header="Param value" Binding="{Binding InputValues}" />
<DataGridTextColumn Header="Output Param" Binding="{Binding OutputNames}"/>
<DataGridTextColumn Header="Measure value" Binding="{Binding OutputValues}"/>
<DataGridTextColumn Header="Error Messages" Binding="{Binding ErrorMessages}"/>
<DataGridTextColumn Header="Warning Messages" Binding="{Binding WarningMessages}" />
</DataGrid.Columns>
</DataGrid>
这是我在 viewModel 中的相关代码:
public RelayCommand<object> CellChangedCommand
{
get;
set;
}
CellChangedCommand = new RelayCommand<object>(CellChangedEvent);
void CellChangedEvent(object obj)
{
}
我得到了带有参数的命令“CellChangedCommand”,但我需要得到行+列号和新值。
谢谢
【问题讨论】:
-
我不允许在数据网格中进行编辑。我建议您考虑将数据网格设为只读。用户选择他们想要编辑的行。他们在叠加层中进行编辑并选择提交或放弃。否则验证就是一场噩梦。