使用实体框架(C#)我有一个User
类,其ONE:MANY
类映射到UserRight
(简单地说,用户拥有一组权限)。每个权利都由一个字符串标识。现在,因为可能的权限的最大数量是有限的(< 10),我希望有10 CheckBoxes
并手动编辑给定用户的权限子集。
这样做的好方法是什么?
詹姆斯
答案 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
。