绑定设置为WPF中的CheckBoxes

时间:2011-05-25 08:22:09

标签: c# .net wpf data-binding

使用实体框架(C#)我有一个User类,其ONE:MANY类映射到UserRight(简单地说,用户拥有一组权限)。每个权利都由一个字符串标识。现在,因为可能的权限的最大数量是有限的(< 10),我希望有10 CheckBoxes并手动编辑给定用户的权限子集。

这样做的好方法是什么?

詹姆斯

1 个答案:

答案 0 :(得分:2)

创建一个RightViewModel类以包含用户权限:

public class RightViewModel : INotifyPropertyChanged
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            Change("Name");
        }
    }

    private bool _hasRight;
    public bool HasRight
    {
        get { return _hasRight; }
        set
        {
            _hasRight = value;
            Change("HasRight");
        }
    }

    public void Change(string strPropertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(strPropertyName));
    }
    public event PropertyChangedEventHandler PropertyChanged;
}

为您的用户创建一个类似的类,其中包含Rights类型的成员ObservableCollection<RightViewModel>

在您的XAML中,使用ItemsControl

<ItemsControl ItemsSource="{Binding Rights}"
    ItemTemplate="{StaticResource RightTemplate}"/>

模板定义:

<DataTemplate x:Key="RightTemplate">
    <CheckBox Content="{Binding Name}" IsChecked="{Binding HasRight, Mode=TwoWay}"/>
</DataTemplate>

Mode=TwoWay使绑定更新为您的RightViewModel实例。

如果您需要使用不同的布局显示复选框,请定义ItemsControl的{​​{1}}。

最后将您的用户设置为容器的ItemsPanel