Создайте класс 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>
.
Inвы 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
вашего контейнера.