我正在使用WPF checkListBox我希望用下面给出的类的所有属性填充其元素。我有一个名为Person的课程
namespace MyProject
{
public class Person
{
public enum PersonFields
{
PersonPermission1,
PersonPermission2,
}
bool _personPermission1;
bool _personPermission2;
public bool PersonPermission1
{
get
{
return _personPermission1;
}
set
{
if (_personPermission1!= value)
{
_personPermission1= value;
}
}
}
public bool PersonPermission2
{
get
{
return _personPermission1;
}
set
{
if (_personPermission2!= value)
{
_personPermission2= value;
}
}
}
}
}
我想动态填充checkListBox及其属性。如在给定的图像中。
答案 0 :(得分:1)
我真的想要获取所有属性的名称,你可以得到这样的列表:
typeof(Person).GetTypeInfo().DeclaredProperties.Select(prop => prop.Name).ToList(),
我注意到你也有匹配的内部enum
,所以你可以改用它的值:
Enum.GetNames(typeof(Person.PersonFields));
在这两种情况下,您仍然需要额外的代码来根据用户操作设置属性值。
我认为更好的方法是拥有Dictionary
权限:
var personPermissions = new Dictionary<Person.PersonFields, bool>
{
{ Person.PersonFields.PersonPermission1, false },
{ Person.PersonFields.PersonPermission2, false }
}
现在您可以将Dictionary
绑定到ItemsSource
,显示Key
并将Value
绑定到复选框。
答案 1 :(得分:0)
是的,我得到了答案......
chkListBoxPerson.ItemsSource = typeof(Person).GetProperties();
chkListBoxPerson.DisplayMemberPath = "Name";
这里chkListBoxPerson是我的CheckListBox的名称。