Я пытаюсь создать собственный заголовок для некоторых столбцов в моей общей DataGrid; Я хочу, чтобы эти заголовки включали в себя текстовое поле, которое я могу использовать для применения подгонщиков к данным.
Это то, что я имею до сих пор:
<Style x:Key="ColumnHeaderStyle" TargetType="dataprimitives:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding}"/>
<TextBox Width="Auto" Tag="{Binding Path=Tag}" LostFocus="TextBox_LostFocus" TextChanged="TextBox_TextChanged" MinWidth="50"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
Это стиль, используемый заголовком, с которым я сейчас играю. Вот генерация кода, которая подает заголовку соответствующие данные о создании:
private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
(...)
e.Column.Header = new { Text = e.Column.Header, Tag = e.PropertyName };
e.Column.HeaderStyle = Resources["ColumnHeaderStyle"] as Style;
(...)
}
Когда приложение запущено, TextBlock столбца будет содержать следующее: { Text = Description, Tag = Description }
Таким образом, я ожидаю, что часть привязки Path=Tag
сработает, однако при достижении события TextChanged
тег будет null
.
Что я делаю не так?