как динамически добавить кнопку в сетку данных SilverLight - PullRequest
0 голосов
/ 16 марта 2010

У меня есть сетка данных, к которой я хочу добавить кнопку / кнопки во время выполнения. Мне удалось сделать это с помощью приведенного ниже кода:

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);

Проблема в том, что я не могу понять, как добавить событие щелчка. Я хочу добавить событие щелчка с параметром, соответствующим идентификатору строки ...

Ответы [ 2 ]

0 голосов
/ 22 марта 2010

ОК, вы должны прикрепить событие при загрузке каждой строки! Так что прикрепите следующее к вашему событию 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);
                }
            }
        }
0 голосов
/ 16 марта 2010

Это кажется довольно забавным способом сделать это. Я хотел бы создать новую кнопку, установить ее атрибуты (включая grid.setcolumn) и добавить ее в datagrid.children. Вы можете создать цикл, если вам нужна кнопка в каждой ячейке.

...