Как динамически изменить заголовок DataGrid TextColumn? - PullRequest
1 голос
/ 21 сентября 2011

Я пытаюсь создать макет DataGrid, в котором имя первого столбца будет динамически изменено. Как я могу в свойстве Header DataGridTextColumn изменить это? Я видел несколько примеров, когда свойство Header подключено к StaticResource, но StaticResource является фиксированным значением, и это не работает для меня, однажды мне нужно несколько значений. Пример:

Если пользователь выбирает RadioButton, фильтруя по часам, заголовок будет X Если фильтры по дням, заголовок будет Y Если Фильтры по месяцам, заголовок будет Z ...

Помните, это один из нескольких примеров, которые мне нужно было бы изменить. Спасибо.

1 Ответ

1 голос
/ 21 сентября 2011

Это легко сделать с помощью привязки данных.

CodeBehind Way

Создайте свойство в коде позади вашего окна для хранения строкового значения; Я назову мой TextProp. Я буду считать, что имя элемента вашего окна для этого примера - «Окно». В теге DataGridTextColumn установите привязку атрибута Header к этому свойству.

<DataGridTextColumn Header="{Binding TextProp, ElementName=Window}"/>

Путь MVVM

Сделайте то же самое, что и выше, за исключением того, что поместите свойство в вашу модель представления, к которой привязана сетка данных. Измените XAML на:

<DataGridTextColumn Header="{Binding TextProp}"/>

Тогда все, что вам нужно сделать, это изменить значение этого свойства любым способом, который вы выберете. Чтобы заставить это обновлять значение при изменении свойства, вам нужно будет реализовать INotifyPropertyChanged (отметьте в нижней части этого сообщения).

...