【问题标题】:WPF datagrid: DataGridCheckBoxColumn eventsWPF 数据网格:DataGridCheckBoxColumn 事件
【发布时间】:2013-10-03 13:40:57
【问题描述】:

在我的 WPF 项目中,我构建了以下带有复选框列的 datagrid

XAML

<DataGrid AutoGenerateColumns="False"
          TargetUpdated="IsIntermediatePointFixedByBracketDataGrid_TargetUpdated">
        <DataGrid.Columns>               
            <DataGridCheckBoxColumn Binding=
                "{Binding isFixedByBracket, NotifyOnTargetUpdated=True }" />
        </DataGrid.Columns>
</DataGrid>

C#

private void IsIntermediatePointFixedByBracketDataGrid_TargetUpdated(object sender,
    DataTransferEventArgs e)
{
    DataGrid dg = (DataGrid)sender;
    if (dg.SelectedIndex != -1 
        && ((IsFixedByBracketElement)dg.SelectedItem).isFixedByBracket
        != this.currentIntermediatePosition.isFixedByBracket[dg.SelectedIndex])
    {
        this.currentIntermediatePosition.isFixedByBracket[dg.SelectedIndex] = 
                    ((IsFixedByBracketElement)dg.SelectedItem).isFixedByBracket;
    }
}

当我选中/取消选中一个复选框时,会引发 TargetUpdated 事件,但只有当我选择和取消选择包含该复选框的单元格时,值才会发生变化。 为什么会这样?我该如何改变这种行为?

【问题讨论】:

    标签: c# wpf xaml checkbox datagrid


    【解决方案1】:

    这是因为CellTemplates内部的默认绑定行为是UpdateSourceTrigger=LostFocus

    改为:

    <DataGridCheckBoxColumn Binding="{Binding isFixedByBracket, NotifyOnTargetUpdated=True ,
                            UpdateSourceTrigger=PropertyChanged }" />
    

    【讨论】:

    • 选中复选框时我需要做一些事情。我注意到引发的事件是 TargetUpdated 事件,但它没有帮助,因为 DataGrid.selectedIndex 变量的值始终为 0 ......我不明白为什么。 TargetUpdated 是要观看的正确事件吗?
    • 我怎样才能选中复选框的对应行?
    • @FrancescoDS 我不知道为什么选择的索引为零,我猜它对应于底层的 CollectionView ,设置 IsSynchronizedWithCurrentItem="True" 可能会解决这个问题,但任何方式检查 SelectedItem DataGrid,然后从您的 ItemsSoruce 提供一些指示,仅供参考,我从未使用过 NotifyOnTargetUpdated 我从您问题中的代码中复制了它。
    • ItemsControl.SelectionChanged
    • 每次更改单元格选择时都会引发SelectionChanged...我需要在选中复选框后引发的事件...
    猜你喜欢
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2016-08-30
    • 2010-10-20
    • 1970-01-01
    • 2015-03-30
    相关资源
    最近更新 更多