【发布时间】:2014-07-22 08:39:56
【问题描述】:
我正在创建自定义控件,该控件将包含动态添加(或删除)行和列的网格。每个单元格必须包含将与某些模型绑定的复选框。如果用户点击复选框,字典应该刷新。
Model.cs
public class Model
{
public Model(List<PanelModel> panels)
{
this.Panels = new Dictionary<int, bool>();
panels.ForEach(panel => this.Panels.Add(panel.Id, false));
}
...
public Dictionary<int, bool> Panels { get; set; }
}
CustomControl.cs
CheckBox checkBox = new CheckBox
{
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
};
Grid.SetRow(checkBox, index);
Grid.SetColumn(checkBox, innerIndex);
Binding binding = new Binding(string.Format("Panels[{0}]", panel.Id));
binding.Source = this.Configurations;
binding.Mode = BindingMode.TwoWay;
checkBox.SetBinding(CheckBox.IsCheckedProperty, binding);
this.mainGrid.Children.Add(checkBox);
如何将特定复选框与字典Panels 中的元素绑定?字典包含 int - bool 对,这意味着 ID 为 x 的面板处于打开或关闭状态。
现在,如果我点击复选框,什么都不会发生。调试器显示,所有面板都是假的(关闭)。
【问题讨论】:
-
你确定
this.Configurations真的是Model类型吗?从您的问题来看,这一点并不明显。