C# 如何将CheckListBox itemsSource设置为类对象的所有属性?

C# 如何将CheckListBox itemsSource设置为类对象的所有属性?,c#,wpf,checklistbox,C#,Wpf,Checklistbox,我使用的是WPF checkListBox,我想用下面给出的类的所有属性填充它的元素。我有一个名为Person的类 namespace MyProject { public class Person { public enum PersonFields { PersonPermission1, PersonPermission2, } bool _personPerm

我使用的是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。如图所示。
是的,我得到了答案

chkListBoxPerson.ItemsSource = typeof(Person).GetProperties();
chkListBoxPerson.DisplayMemberPath = "Name";

这里chkListBoxPerson是我的复选框的名称。

如果你真的想得到你所有财产的名称,你可以得到如下列表:

typeof(Person).GetTypeInfo().DeclaredProperties.Select(prop => prop.Name).ToList(),
我注意到您还有一个匹配的内部
枚举
,因此您可以使用它的值:

Enum.GetNames(typeof(Person.PersonFields));
在这两种情况下,您仍然需要额外的代码来根据用户操作设置属性值

我认为更好的方法是使用
字典
权限:

var personPermissions = new Dictionary<Person.PersonFields, bool>
{
    { Person.PersonFields.PersonPermission1, false },
    { Person.PersonFields.PersonPermission2, false }
}
var personPermissions=新字典
{
{Person.personfeelds.PersonPermission1,false},
{Person.personfeelds.PersonPermission2,false}
}

现在,您可以将
字典
绑定到
项目资源
,显示
,并将
绑定到复选框。

这可能有助于您达到目的:您必须这样做的具体原因是什么?更常见的方法是只有一个属性同时保存
PersonPermission1
PersonPermission2
的值。然后您可以将ItemsSource绑定到该属性I这样做是因为我想设置不同人员的权限。您可以通过使用
Converter
绑定
ItemsSource
并使用
Reflection
来获取所有属性。但对于双向工作的复选框绑定,您需要有对实际属性的引用。如果您确定Person类只有这两个属性,为什么不直接将其与该属性绑定呢?Thanx@RohitVats,但我得到了答案。