C# 绑定设置为WPF中的复选框

C# 绑定设置为WPF中的复选框,c#,.net,wpf,data-binding,C#,.net,Wpf,Data Binding,使用实体框架(C#),我有一个User类,它有ONE:MANY映射到UserRight类(简单地说,用户有一组权限)。每个权限由一个字符串标识。现在,由于可能的权限的最大数量是有限的(创建一个RightViewModel类来包含用户权限: public class RightViewModel : INotifyPropertyChanged { private string _name; public string Name { get { return

使用实体框架(C#),我有一个
User
类,它有
ONE:MANY
映射到
UserRight
类(简单地说,用户有一组权限)。每个权限由一个字符串标识。现在,由于可能的权限的最大数量是有限的(创建一个
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;
}
为您的用户创建一个类似的类,包含类型为
ObservableCollection
的成员
权限

在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
ItemsPanel


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

复选框给出一个布尔值,您的用户权限是字符串-那么您到底想做什么?