2017-12-20 9 views
0

いくつかのユーザー権限管理を含むデスクトップアプリケーションを作成しています。そのため、すべてのユーザー権限を管理するセグメントを構築しています。モデルクラスのプロパティに基づいてコントロールのグループを作成する方法

さまざまな種類のアクセス許可をすべてUIにハードコードする前に、WPFでこれを動的に行うことができるかどうかは疑問でした。

public class Role 
{ 
    public enum Permission 
    { 
     None, 
     Read, 
     Write 
    }; 

    public int id; 
    public string name; 
    public bool isAdmin; 
    public Permission Usermanagement; 
    public Permission Appointments; 
    public Permission Events; 

と私はWPFを作成したい、このクラスの各パーミッションについて:

は、具体的には、私は次のようになり、ユーザーと彼の権限を持つモデルを(各ユーザーが役割を持っている)持っています名前の付いたテンプレートと、コンボボックスの種類を選択するコンボボックス。 私の最初の推測はListView/ListBoxをテンプレートと共に使用することでした(その部分は問題ではありません)。

私の質問は、私のテンプレートのソースリストとしてアクセス権のリストを取得する方法と、その後、正しいアクセス権が更新されるように実際のオブジェクトをバインドする方法です。

これは可能性についてより多くの質問です。私はアクセス許可をハードコードし、それらを1つずつバインドできます。

答えて

1

あなたはこのような名前/許可ペアのコレクション使用することができます:

public class NamedPermission 
{ 
    public string Name { get; set; } 
    public Permission Permission { get; set; } 
} 

public class Role 
{ 
    ... 

    public List<NamedPermission> Permissions { get; } = new List<NamedPermission> 
    { 
     new NamedPermission { Name = "Usermanagement" }, 
     new NamedPermission { Name = "Appointments" }, 
     new NamedPermission { Name = "Events" } 
    }; 
} 

をし、このようにItemsControlにバインド:

<ItemsControl ItemsSource="{Binding Permissions}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Name}" Width="100" VerticalAlignment="Center"/> 
       <ComboBox SelectedValuePath="Content" SelectedValue="{Binding Permission}"> 
        <ComboBoxItem Content="None"/> 
        <ComboBoxItem Content="Read"/> 
        <ComboBoxItem Content="Write"/> 
       </ComboBox> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
関連する問題