У меня есть таблица данных wpf, в которой столбцы динамически генерируются в коде, и мне нужно вставить маленькие кнопки в заголовок каждого столбца справа от текста, чтобы реализовать настраиваемую (сложную) фильтрацию во всплывающем диалоговом окне.
У меня проблемы с выяснением, как вставить кнопку в заголовок столбца таблицы данных, используя только код позади.
Это маршрут, по которому я начал спускаться (закомментированный), но он не работает:
private static DataGridTextColumn GetTextColumn(string ColumnName, string FormatString, bool AlignRight)
{
DataGridTextColumn c = new DataGridTextColumn();
c.Header = Test.Common.UIBizObjectCache.LocalizedText.GetLocalizedText(ColumnName);
c.Binding = new System.Windows.Data.Binding(ColumnName);
if (!string.IsNullOrWhiteSpace(FormatString))
c.Binding.StringFormat = FormatString;
if (AlignRight)
{
Style cellRightAlignedStyle = new Style(typeof(DataGridCell));
cellRightAlignedStyle.Setters.Add(new Setter(DataGridCell.HorizontalAlignmentProperty, HorizontalAlignment.Right));
c.CellStyle = cellRightAlignedStyle;
}
//var buttonTemplate = new FrameworkElementFactory(typeof(Button));
//buttonTemplate.Text = "X";
//buttonTemplate.AddHandler(
// Button.ClickEvent,
// new RoutedEventHandler((o, e) => HandleColumnHeaderButtonClick(o, e))
// );
//c.HeaderTemplate=new DataTemplate(){VisualTree = buttonTemplate};
return c;
}
Я получаю недопустимое исключение операции «Тип ContentPresenter должен реализовывать IAddChild для использования в FrameworkElementFactory AppendChild.»
Очевидно, что я делаю это неправильно.:) Любая помощь будет принята с благодарностью.