Привязка к свойству объекта через объект [свойство], а не объект.property - PullRequest
0 голосов
/ 09 февраля 2011

Я прочитал обзор привязки данных WPF, и я чувствую, что возможно, что это возможно, но я не могу сделать здесь умственный скачок. Я знаю, что если я установлю привязку Path на foo и установлю Source на obj, то привязка будет смотреть на obj.foo. Другими словами, obj.__getattr__() будет доступен.

Все, что я хочу, это вместо этого посмотреть obj[foo]. Я использую Ironpython, и в этом случае мой obj класс имеет переопределенный __getitem__(), который вызывает функцию-член и возвращает значение, поэтому мне нужна эта функциональность.

Здесь приведенный выше пример написан программно. Это отображает foo свойство obj в флажке:

myBinding = Binding("foo")
myBinding.Source = obj          
acheckbox.SetBinding(CheckBox.IsCheckedProperty, myBinding)

Решение

Это так просто, по-видимому!

myBinding = Binding("[foo]")
myBinding.Source = obj          
acheckbox.SetBinding(CheckBox.IsCheckedProperty, myBinding)

1 Ответ

1 голос
/ 09 февраля 2011

Вы можете просто использовать это в привязке, например, если у моего DataContext / source есть свойство

public string this[int i]
{
    get{...}
    set{...}
}

вы можете создать такую ​​привязку:

<TextBlock Text="{Binding [0]}"/>

Редактировать: Я чувствую, что, возможно, неправильно понял ваш вопрос, если да, пожалуйста, скажите мне.

...