Пользовательский элемент управления WPF и свойство привязки - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю над настраиваемым ListView. В этой области я хочу определить пользовательский GridViewColumn, который имеет свойство CellBinding, которое само является 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 всегда равен нулю. Пожалуйста, почему?

1 Ответ

1 голос
/ 10 апреля 2019

CellBinding должно не быть свойством зависимости, если предполагается, что оно установлено в BindingBase.

Вы должны реализовать его как свойство CLR, а затем реализовать свой класс GridViewColumn, чтобы применить привязку к сгенерированному элементу ячейки, как требуется:

public class GridViewColumn : System.Windows.Controls.GridViewColumn
{
    private BindingBase _cellBinding;
    public BindingBase CellBinding
    {
        get => _cellBinding;
        set => _cellBinding = value;
    }
    //...
}

Получение значения свойства зависимостей оценивает привязку, которая отличается от свойства BindingBase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...