我正在创建自定义控件,其中包含动态添加(或删除)行和列的网格。每个单元格都必须包含复选框,该复选框将与某个模型绑定。如果用户单击复选框,则字典应刷新。
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的面板打开或关闭。
现在,如果我点击复选框,则不会发生任何事情。调试器显示所有面板都是假的(关闭)。
答案 0 :(得分:0)
根据您的描述,我会使用ItemsControl来处理它,其中ItemsSource绑定到您的集合。
然后添加一个ItemTemplate,通过绑定到复选框来显示bool。
您可以将ItemsControl PanelTemplate设置为WrapPanel,以便仍然可以看到网格布局。