如何根据模型类的属性创建一组控件



我正在编写包含某些用户权限管理的桌面应用程序,因此我正在构建一个细分市场来管理所有用户权限。

在我开始对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创建一个带有名称和Commobox的模板来选择权限的类型。我的第一个猜测是使用具有模板的ListView/ListBox(该部分不是问题)。

我的问题是如何获取权限列表作为我的模板的源列表,之后如何将真实对象绑定到其模板,因此正确的权限会更新。

这更多的是关于可能性的问题,我可以将我的权限进行硬编码并一对一地绑定。

您可以使用类似的名称/权限对的集合:

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>

最新更新