2017-12-20 1 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 만들려 :

더 구체적으로, 나는 사용자와의 모델과 자신의 권한을 (각 사용자는 역할을한다)하는이 모양이 이름이있는 템플릿과 권한의 종류를 선택하는 comboBox. 내 첫 번째 추측 템플릿 (이 부분은 문제가되지 않습니다) ListView/ListBox 사용하는 것입니다.

제 질문은 내 템플릿의 소스 목록으로 사용 권한 목록을 얻는 방법과 그 후에 실제 개체를 바인딩하는 방법으로 올바른 사용 권한이 업데이트되도록하는 것입니다.

더 많은 질문이 있습니다. 권한을 하드 코딩하고 하나씩 바인딩 할 수 있습니다.

답변

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> 
관련 문제