我正在处理自定义ListView。在此范围内,我想定义一个具有CellBinding属性的自定义GridViewColumn,该属性本身就是BindingBase。
此属性的定义如下:
public class GridViewColumn : System.Windows.Controls.GridViewColumn
{
public static readonly DependencyProperty CellBindingProperty = DependencyProperty.RegisterAttached( "CellBinding", typeof( BindingBase ), typeof( GridViewColumn ),
new PropertyMetadata( null, new PropertyChangedCallback( OnCellBindingChanged ) ) );
public BindingBase CellBinding
{
get => (BindingBase)this.GetValue( CellBindingProperty );
set => this.SetValue( CellBindingProperty, value );
}...
在xaml编辑器中一切正常,并且似乎可以正确识别此属性:
<wpfTools:GridViewColumn Header="Titre2" SortProperty="B" CellAlignement="Right" CellBinding="{Binding B}"/>
但是当我想在运行时使用此属性时, column.CellBinding 的结果始终为null。 拜托,为什么?
答案 0 :(得分:1)
CellBinding
设置为BindingBase
,则
{1>}不应该是依赖项属性。
您应该将其实现为CLR属性,然后实现GridViewColumn
类以根据需要将绑定应用于生成的单元元素:
public class GridViewColumn : System.Windows.Controls.GridViewColumn
{
private BindingBase _cellBinding;
public BindingBase CellBinding
{
get => _cellBinding;
set => _cellBinding = value;
}
//...
}
获取依赖属性的值会评估绑定BindingBase
所不想要的绑定。