DataGridTemplateColumn中的复选框是故障的

时间:2012-08-02 16:28:19

标签: c# silverlight datagrid

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

我应该如何解决此问题,我应该向此数据网格添加事件处理程序,但是如何?

非常感谢您的意见,

1 个答案:

答案 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是布尔值。