wpf - DataGrid 通过单击 UpdateSourceTrigger = SourceUpdated 捕获单元格值更改事件

标签 wpf events datagrid

我正在努力使用 DataGrid 捕获事件。我想要实现的是,当用户在数据网格单元格的复选框上单击一次时,会触发一个事件,我可以获得当前单元格值。但是,CellChangedEvent 仅在选择更改时触发,而 CellEditingEvent 要么在单元格失去焦点时触发,要么从不触发。如果我尝试通过执行以下操作使复选框可通过单击进行修改,它永远不会触发:

<DataGrid Grid.ColumnSpan="2" Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True" ItemsSource="{Binding MasterDataTable, Mode=TwoWay}" CanUserAddRows="False" Margin="10 5" CurrentCellChanged="DataGrid_CurrentCellChanged">
            <DataGrid.Resources>
                <Style TargetType="DataGridCell">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="IsEditing" Value="True" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.Resources>
        </DataGrid>

当用户单击单元格内的复选框时,如何立即调用方法? 提前致谢。

最佳答案

1) 在您的 DataGrid 中注册 TargetUpdated 事件。

2) 指定一个 Column ,最好设置 AutoGenerateColumns=False

3) 在您的 Binding 标记中的 NotifyOnTargetUpdated 属性(您的目标是您的复选框)。

4) 在您的绑定(bind)中 UpdateSourceTrigger=PropertyChangedMode=TwoWay(不是 DataGrid 的默认行为)。

XAML:

 <DataGrid TargetUpdated="DataGrid_TargetUpdated" 
           AutoGenerateColumns="False" 
           ItemsSource="{Binding SomeValues, Mode=OneWay}"  CanUserAddRows="False"  >
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Binding="{Binding Path=.,  NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="*"/>                        
    </DataGrid.Columns>
</DataGrid>

在 CS 中:(您可能不想处理该事件。)

   private void DataGrid_TargetUpdated(object sender, DataTransferEventArgs e)
   {
         // Do what ever...
   }  

关于wpf - DataGrid 通过单击 UpdateSourceTrigger = SourceUpdated 捕获单元格值更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20174094/

相关文章:

wpf - 在 XAML 中设置 WPF ContextMenu 的 PlacementTarget 属性?

wpf - 弹出控件 WPF 的外部鼠标单击

c# - 网格内的 ContentControl 无法正确调整大小

reactjs - 如何在 DataGrid for Material UI 中设置可拖动框的样式?

wpf - DataGrid 是 WPF 中的必需品吗?

c# - 更新自动计算的属性的绑定(bind)

java - 关闭应用程序后程序不会停止

c# - CheckedChanged 事件中的问题

javascript - 通过 body 标签的大量自定义 JS 事件

javascript - 内联编辑面临困难