我有一个数据网格,我想在运行时添加一个按钮。我已设法使用以下代码执行此操作:
DataGridTemplateColumn templateCol = new DataGridTemplateColumn();
templateCol.CellTemplate = (System.Windows.DataTemplate)XamlReader.Load(
@"<DataTemplate xmlns='http://schemas.microsoft.com/client/2007'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
<Button Content='" + item.Value.Label + @"'/>
</DataTemplate>");
_dataGrid.Columns.Add(templateCol);
问题是我无法弄清楚如何添加点击事件。我想添加一个click事件,其参数对应于行id ...
答案 0 :(得分:0)
这似乎是一种时髦的方式。我将实例化一个新按钮,设置它的属性(包括grid.setcolumn)并将其添加到datagrid.children。如果每个单元格中都需要一个按钮,则可以创建一个循环。
答案 1 :(得分:0)
好的,你必须在加载每一行时附加事件!请将以下内容附加到您的LoadingRow事件......
private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
DataGridRow row = e.Row;
foreach (DataGridColumn col in _dataGrid.Columns)
{
FrameworkElement cellContent = col.GetCellContent(e.Row);
Button b = cellContent as Button;
if (b != null)
{
//clear previous event
b.Click -= ActionButton_Click;
b.Click += new RoutedEventHandler(ActionButton_Click);
}
}
}