Привязка Обновления WPF при прямой Привязке с преобразователем DataContext w/

Обычно, когда Вы хотите, чтобы связанное с данными управление 'обновило', Вы используете событие "PropertyChanged", чтобы предупредить интерфейс, что данные изменились негласно.

Например, у Вас мог быть textblock, который связывается с datacontext со свойством "DisplayText"

<TextBlock Text="{Binding Path=DisplayText}"/>

Отсюда, если DataContext генерирует событие PropertyChanged с PropertyName "DisplayText", то текст этого textblock должен обновить (предположение, что Вы не изменили Режим привязки).

Однако у меня есть более сложная привязка, которая использует много свойств прочь datacontext для определения заключительного стиля управления. Для выполнения этого я связываю непосредственно с datacontext и использую преобразователь. В этом случае я работаю с источником изображения.

<Image Source="{Binding Converter={StaticResource ImageConverter}}"/>

Как Вы видите, я использую {Привязка} без пути для привязки непосредственно с datacontext, и я использую ImageConverter для выбирания изображения, которое я ищу. Но теперь у меня нет пути (что я знаю о) сказать той привязке обновлять. Я пытался генерировать propertychanged событие с"." как propertyname, который не работал.

Действительно ли это возможно? Я должен обернуть логику преобразования в свойство, которое привязка может присоединить к или является там способом сказать привязке обновляться (явно не обновляя привязку)?

Любая справка значительно ценилась бы.Спасибо! - Adam

8
задан Adam 19 April 2010 в 20:27
поделиться

3 ответа

Обходной путь здесь заключался в добавлении свойства к моему объекту (для использования в качестве контекста данных) под названием «Self», которое просто возвращало

public Object Самостоятельно {получить {вернуть это; }}

Затем в привязке я использовал это свойство:

Затем, когда я вызываю

PropertyChanged ( этот новый PropertyChangedEventArgs ("Self"))

работает как шарм.

Спасибо всем.

20
ответ дан 5 December 2019 в 07:34
поделиться

Я не верю, что есть способ выполнить именно то, что вам нужно, с помощью вашего текущего преобразователя. Как вы упомянули, вы можете выполнить расчет в своей модели представления или изменить преобразователь на IMulitValueConverter .

Исходя из вашего конкретного сценария (преобразователь привязан к классу ViewModel и некоторым его свойствам), я бы склонился к реализации логики в ViewModel.

2
ответ дан 5 December 2019 в 07:34
поделиться

Хм, вы не показываете полную реализацию. Но я думаю, что он должен обновиться, если значение, привязанное к графическому интерфейсу, предоставляет PropertyChanged-Event.

С уважением

0
ответ дан 5 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: