我在Silverlight中添加了一个带有复选框的DataGridTemplateColumn到我的Datagrid。复选框已成功添加到数据网格列中。但是,如果我检查多一个chcekbox,则此列中的其他一些复选框将自动受到影响(即,从已更改为未选中,或反之亦然)。我没有为此复选框添加任何事件处理程序,所以怎么会发生这种情况?在我看来,如果我滚动数据网格来查看更多记录,数据网格会自动刷新/更新,并且复选框在此时搞砸了。我的代码如下:
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn() { Header = "header",Width=new DataGridLength(50) };
StringBuilder CellTemp = new StringBuilder();
CellTemp.Append("<DataTemplate ");
CellTemp.Append("xmlns='http://schemas.microsoft.com/winfx/");
CellTemp.Append("2006/xaml/presentation' ");
CellTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' >");
CellTemp.Append("<CheckBox x:Name='" + "checkBoxHeader" + "' Margin='4' IsChecked='False'/>");
CellTemp.Append("</DataTemplate>");
templateColumn.CellTemplate = (DataTemplate)XamlReader.Load(CellTemp.ToString());
ftrDataGrid.Columns.Add(templateColumn);
我应该如何解决此问题,我应该向此数据网格添加事件处理程序,但是如何?
非常感谢您的意见,
卫
答案 0 :(得分:0)
在模板中设置绑定非常简单:
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn() { Header
...
CellTemp.Append("<CheckBox x:Name='" + "checkBoxHeader" + "' Margin='4' IsChecked="{Binding MyProperty, Mode=TwoWay}"/>");
...
ftrDataGrid.Columns.Add(templateColumn);
MyProperty是布尔值。