自定义控件和元素绑定

时间:2014-07-22 08:39:57

标签: c# wpf binding

我正在创建自定义控件,其中包含动态添加(或删除)行和列的网格。每个单元格都必须包含复选框,该复选框将与某个模型绑定。如果用户单击复选框,则字典应刷新。

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的面板打开或关闭。

现在,如果我点击复选框,则不会发生任何事情。调试器显示所有面板都是假的(关闭)。

1 个答案:

答案 0 :(得分:0)

根据您的描述,我会使用ItemsControl来处理它,其中ItemsSource绑定到您的集合。

然后添加一个ItemTemplate,通过绑定到复选框来显示bool。

您可以将ItemsControl PanelTemplate设置为WrapPanel,以便仍然可以看到网格布局。