У меня есть DataGrid
, связанный с ObservableCollection
. Я динамически добавляю столбцы. Cols struc - это первый столбец TextBlock, остальные - кнопки. У меня есть некоторые проблемы с кнопками:CommandProperty к столбцу кнопки, добавленному динамически в DataGrid, не работает
Я хочу установить команду для этого col, вызывая функцию OpenTORWindow с двумя параметрами (String, String). Я не могу понять, как это установить. Код для добавления COLS как:
FrameworkElementFactory buttonTemplate = null;
for (int i = 0; i < GlobalUtils.TOR_List.Count; i++)
{
buttonTemplate = new FrameworkElementFactory(typeof(Button));
switch (i) {
case 0:
buttonTemplate.SetBinding(Button.ContentProperty,
new Binding("CLVButtonText"));
break;
case 1:
buttonTemplate.SetBinding(Button.ContentProperty,
new Binding("MKBLButtonText"));
break;
}
buttonTemplate.SetBinding(Button.CommandProperty, new Binding("MyCommand"));
RoutedEventHandler handler = new RoutedEventHandler(OpenNewWindow);
buttonTemplate.AddHandler(Button.ClickEvent, handler, true);
this.seivesTorGrid.Columns.Add(new DataGridTemplateColumn()
{
Header = GlobalUtils.TOR_List[i].TOR_Id,
CellTemplate = new DataTemplate() { VisualTree = buttonTemplate }
});
}
поручаю МояКоманда с:
MyCommand = new RelayCommand(param => this.OpenWindow(s.SeiveIdSize))
Но МояКоманда никогда не срабатывает. Затем я добавил AddHandler, это работает. Любая идея, почему CommandProperty не работает.
@Deigo, спасибо. Ну, это выглядело в правильном источнике, но я упомянул только публичную MyCommand и не делал это как свойство get; & set;. Следовательно, он не смог его найти. Я добавил его как свойство, и все стало хорошо работать. – Tvd