如何在WPF中捕获Datagrid's单元格的值变化事件

本文关键字:单元格 事件 变化 WPF Datagrid | 更新日期: 2023-09-27 18:05:23

我使用Datagrid来显示一些MySQL表。当然,我希望数据网格的变化能够反映在MySQL表中。我已经编写了一个命令来处理Cell value changed event,但是,该命令没有击中:

<DataGrid x:Name="Table_DataGrid" Grid.Row="0" Grid.Column="0"  
    HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0"
    ItemsSource="{Binding MyServerWrapViewModel.TableFromMySql,
                  Source={StaticResource Locator}}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="TargetUpdated">
            <cmd:EventToCommand
                Command="{Binding updateCell}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</DataGrid>

我认为我听错了事件,因为我的updateCell没有击中…如何捕捉数据网格的cell value changed event ?

如何在WPF中捕获Datagrid's单元格的值变化事件

为什么要附加事件?通常,您将针对ObservableCollection中对象的某些属性为您的列创建一个DataBinding。网格单元格中的更改将直接推入绑定到的属性的setter中。从那里,您可以做任何您喜欢的事情,比如写入数据库或设置修改的标志。

我想到一个解决办法了。

首先将相关的ViewModel添加为DataGrid's DataContext,否则编译器将不知道在哪里找到绑定命令。

DataContext="{Binding MyServerWrapViewModel,Source={StaticResource Locator}}"

然后将TargetUpdated更改为CurrentCellChanged