我有DataGrid
一个ObservableCollection
. 我动态添加cols。Cols struc 是第一个 col 是 TextBlock 其余都是按钮。我对按钮有某些问题:
我想为该 col 设置命令,调用带有 2 个参数(字符串、字符串)的函数“OpenTORWindow”。我无法弄清楚如何设置它。添加 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 分配:
MyCommand = new RelayCommand(param => this.OpenWindow(s.SeiveIdSize))
但是 MyCommand 永远不会被触发。然后我添加了 AddHandler,这是有效的。知道为什么 CommandProperty 不起作用。