-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 }
}

これで、Dictionaryto ItemsSource、 display Key、および bind Valueto チェックボックスをバインドできます。

于 2014-02-09T07:57:18.357 に答える
0

はい、答えが出ました...

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

ここで、chkListBoxPerson は私の CheckListBox の名前です。

于 2014-02-09T07:46:34.270 に答える