如何从DataGridColumn绑定的代码中获取UpdateSourceTrigger设置?

时间:2013-01-16 17:02:17

标签: wpf data-binding code-behind

我有一个DataGrid控件,它有一个TextColumn

    <DataGrid ItemsSource="{Binding Path=Dvm.Data}"
              Name="GrdName"
              AutoGenerateColumns="False"
              Margin="5"
              SelectionMode="Single">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Column 1"
                                Binding="{Binding Path=Col1, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
                                Width="*"/>
        </DataGrid.Columns>
    </DataGrid>

我有一个自定义控件,要求我测试UpdateSourceTrigger设置是什么,但是我无法从代码中访问它。我想做这样的事情:

BindingOperations.GetBindingExpression(GrdName.Columns[0], DataGridTextColumn.BindingProperty);

但是,BindingProperty实际上并不是依赖属性,所以我不能这样做。有谁知道如何获取该列的Binding属性的绑定表达式,以便我可以获取UpdateSourceTrigger设置?

谢谢, 马特

1 个答案:

答案 0 :(得分:2)

Binding属性不是DependancyProperty,因此您必须使用普通公共属性进行访问。 因此,您需要进行一些投射,因为BindingDataGridTextColumn属性的类型为BindingBase,您必须转换为Binding才能访问UpdateSourceTrigger。 由于DataGridTextColumn派生自DataGridBoundColumn,您可以从中投射以使其更通用

这样的事情应该有效:

   var columnUpdateSourceTrigger = ((GrdName.Columns[0] as DataGridBoundColumn).Binding as Binding).UpdateSourceTrigger;