如何动态添加按钮到SilverLight数据网格

时间:2010-03-16 01:23:23

标签: silverlight-3.0

我有一个数据网格,我想在运行时添加一个按钮。我已设法使用以下代码执行此操作:

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 ...

2 个答案:

答案 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);
                }
            }
        }