我在用checkbox
in an itemtemplate
中的列Silverlight 5 数据网格。
我面临着一个奇怪的问题。当我选择多个时checkbox
然后上下滚动网格,选择会转移到其他checkbox
.
我在代码中修复了这个问题。我在网格的 LoadingRow 和 UnloadingRow 事件中进行了处理。
一旦加载了一行,我们就需要查找要使复选框保持选中或未选中状态的条件。但是一旦设置 IsChecked 属性,复选框的 Checked 或 UnChecked 事件就会被触发。
在这种情况下,我们可以取消注册复选框的 Checked 和 UnChecked 事件(如果有),设置 IsChecked 属性。设置完毕后,再次注册事件。
以下是为您提供帮助的代码。
将 LoadingRow 和 UnloadingRow 事件添加到网格中。
... LoadingRow="DGUserList_RowLoadUnload" UnloadingRow="DGUserList_RowLoadUnload">
在您的代码隐藏文件中:
private void DGUserList_RowLoadUnload(object sender, DataGridRowEventArgs e)
{
DataGridRow row = e.Row;
CheckBox cbox = (CheckBox)this.dgUserList.Columns[0].GetCellContent(row);
this.UpdateHookedEventsForCheckBox(cbox, false);
cbox.IsChecked = true; // Here put your condition for check/uncheck
this.UpdateHookedEventsForCheckBox(cbox, true);
}
private void UpdateHookedEventsForCheckBox(CheckBox chkBox, bool register)
{
if (register)
{
chkBox.Checked += this.CheckBox_Checked;
chkBox.Unchecked += this.CheckBox_Unchecked;
}
else
{
chkBox.Checked -= this.CheckBox_Checked;
chkBox.Unchecked -= this.CheckBox_Unchecked;
}
}
这样我就不需要费心在我的 Checked 和 UnChecked 事件中放入一些无须鳕代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)