Не работает, потому что не может найти элемент с именем _this
. Я получаю следующую ошибку в окне «Вывод» при отладке вашего кода в Visual Studio:
System.Windows.Data Ошибка: 4: невозможно
найти источник для привязки со ссылкой
'ElementName = _this.
BindingExpression: Path = MYHEADER;
DataItem = NULL; целевой элемент
'Button' (Name = 'TestButton'); цель
свойство «Содержимое» (тип «Объект»)
Что касается того, почему он не может его найти - я думаю, это потому, что привязки WPF используют визуальное дерево, чтобы найти источник привязки. В этом случае MyComboBoxColumn
отсутствует в визуальном дереве, поэтому он не может найти элемент с таким именем.
Я также пытался использовать RelativeSource
, чтобы найти элемент, но это тоже не сработало - вероятно, по той же причине.
Единственное, что я мог получить, - это установить DataContext
кнопки для самого столбца в конструкторе:
public MyComboBoxColumn()
{
InitializeComponent();
this.TestButton.DataContext = this;
}
А затем измените привязку в XAML:
<tk:DataGridTemplateColumn.Header>
<Button Content="{Binding Path=MyHeader}" x:Name="TestButton" />
</tk:DataGridTemplateColumn.Header>
Это не лучший способ сделать это, но, по крайней мере, это работает.