WPF Привязка к свойствам объекта с определенными атрибутами - PullRequest
0 голосов
/ 21 января 2010

У меня есть список, к которому я привязал контекст данных к объекту. Этот объект имеет ряд свойств, некоторые из которых будут иметь определенный атрибут.

Из этого я хочу установить для источника элементов свойства объекта, но отображать только те свойства, для которых установлен определенный атрибут.

Может кто-нибудь помочь с тем, с чего я начну?

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Вы можете использовать LINQ и отражение, чтобы получить значения свойств, для которых установлен этот атрибут:

Class1 class1 = new Class1 { Name = "Sam", DOB = DateTime.Now, SSN = "123" };

MyListBox.ItemsSource = from p in typeof(Class1).GetProperties()
                        where p.IsDefined(typeof(Att), false)
                        select p.GetValue(class1, null);

Имя и DOB помечены как [Att] в моем тесте, а их значения добавлены в ListBox. SSN нет.

0 голосов
/ 21 января 2010

Одним из способов является создание контекста данных объекта динамически и привязка свойств Visibility к свойствам этого динамически созданного объекта. Затем вы будете использовать его следующим образом:

var provider = new MyDynamicProvider();
// Add the names of the properties with the particular attribute with 
// initial values (found using reflection elsewhere). 
provider.MyValues.Add("PropertyWithAttribute", "Test");
provider.MyValues.Add("PropertyWithAttributeVisibility", Visibility.Visible);
// Add properties that do not have the attribute
provider.MyValues.Add("PropertyWithoutAttributeVisibility", Visibility.Collapsed);
view.DataContext = provider.CreateDynamicWrapper();

В виде теперь вы можете сделать следующее:

<TextBlock 
    Visibility="{Binding PropertyWithAttributeVisibility}" 
    Text="{Binding PropertyWithAttribute}" 
    />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...