-1

我正在使用 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 。如给定的图像。 具有动态属性的 CheckListBox

4

2 回答 2

1

如果您真的想获取所有属性的名称,您可以像这样获取它们的列表:

typeof(Person).GetTypeInfo().DeclaredProperties.Select(prop => prop.Name).ToList(),

我注意到你也有一个匹配的 inner enum,所以你可以使用它的值来代替:

Enum.GetNames(typeof(Person.PersonFields));

在这两种情况下,您仍然需要额外的代码来根据用户操作设置属性值。

我认为更好的方法是拥有以下Dictionary权限:

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

现在您可以绑定DictionaryItemsSource、显示Key和绑定Value到复选框。

于 2014-02-09T07:57:18.357 回答
0

是的,我得到了答案...

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

这里 chkListBoxPerson 是我的 CheckListBox 的名称。

于 2014-02-09T07:46:34.270 回答