В Silverlight, как вы устанавливаете HeaderStyle динамического DataGridColumn

У меня есть сетка данных, и я динамически добавляю столбцы в эту сетку из моей ViewModel. У пользователя есть диалоговое окно настроек, в котором он может управлять столбцами, отображаемыми в этом DataGrid. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как установить HeaderStyle для одного из этих DataGridColumns, созданных в моей ViewModel.

Самая простая версия этого — добавить всплывающую подсказку в DataGridColumnHeader для этих динамических столбцов. Обратите внимание, что эти столбцы не определяются в XAML из-за их динамического характера. Большинство столбцов управляются данными и поэтому неизвестны во время компиляции.

Бонусные баллы за демонстрацию того, как добавить кнопку в этот стиль и как настроить ее свойство click или command, чтобы я мог удалить столбец из сетки (представьте изображение x на кнопке в заголовке столбца , когда я нажимаю это, я хочу удалить столбец.)


person Boushley    schedule 02.09.2011    source источник


Ответы (1)


Вы можете назначить HeaderStyle в коде следующим образом:

        Style headerStyle = new Style(typeof(DataGridColumnHeader));
        headerStyle.Setters.Add(new Setter(ToolTipService.ToolTipProperty, "Hello World"));

        yourDynamicColumn.HeaderStyle = headerStyle;
person AnthonyWJones    schedule 02.09.2011
comment
Знаете ли вы, как я могу установить кнопку удаления? Я действительно обнаружил этот метод для настройки всплывающей подсказки, но он не поддерживает добавление элементов пользовательского интерфейса в заголовок столбца. - person Boushley; 03.09.2011
comment
@Boushley: Это намного сложнее, чем должно быть. Один из подходов — полностью заменить шаблон на DataGridColumnHeader. Но даже в этом случае вам придется найти способ привязать нажатие кнопки к операции, которую вы хотите выполнить. - person AnthonyWJones; 03.09.2011
comment
Да, кажется, это то, что я обнаруживаю. Кажется, мне пришлось бы прыгать через множество обручей, чтобы получить там кнопку ... и когда я привязал ее к нужному, это действительно не сработало бы:/ - person Boushley; 03.09.2011