如何基于模型类的属性创建一组控件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何基于模型类的属性创建一组控件相关的知识,希望对你有一定的参考价值。
我正在编写一个包含一些用户权限管理的桌面应用程序,因此我正在构建一个段来管理所有用户权限。
在我开始将所有不同类型的权限硬编码到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;
对于这个类中的每个Permission,我希望WPF创建一个带有名称的模板和一个用于选择权限类型的comboBox。我的第一个猜测是使用带有模板的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>
以上是关于如何基于模型类的属性创建一组控件的主要内容,如果未能解决你的问题,请参考以下文章
当我单击目标 C 中的一个按钮(添加按钮)时,如何创建一组按钮?