我有一个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设置?
谢谢, 马特
答案 0 :(得分:2)
Binding
属性不是DependancyProperty
,因此您必须使用普通公共属性进行访问。
因此,您需要进行一些投射,因为Binding
中DataGridTextColumn
属性的类型为BindingBase
,您必须转换为Binding
才能访问UpdateSourceTrigger
。
由于DataGridTextColumn
派生自DataGridBoundColumn
,您可以从中投射以使其更通用
这样的事情应该有效:
var columnUpdateSourceTrigger = ((GrdName.Columns[0] as DataGridBoundColumn).Binding as Binding).UpdateSourceTrigger;