Создание настраиваемого заголовка столбца в DataGrid - проблема привязки - PullRequest
0 голосов
/ 16 сентября 2011

Я пытаюсь создать собственный заголовок для некоторых столбцов в моей общей 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.

Что я делаю не так?

1 Ответ

0 голосов
/ 18 сентября 2011

Очевидно, что использование анонимных типов не очень хорошо работает с XAML и связыванием ... что, как я знаю, странно, поскольку использует отражение.

Создание простого открытого класса для хранения данныхиспользование его вместо анонимного типа решило проблему.

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