Обычно, когда Вы хотите, чтобы связанное с данными управление 'обновило', Вы используете событие "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
Обходной путь здесь заключался в добавлении свойства к моему объекту (для использования в качестве контекста данных) под названием «Self», которое просто возвращало
public Object Самостоятельно {получить {вернуть это; }}
Затем в привязке я использовал это свойство:
Затем, когда я вызываю
PropertyChanged ( этот новый PropertyChangedEventArgs ("Self"))
работает как шарм.
Спасибо всем.
Я не верю, что есть способ выполнить именно то, что вам нужно, с помощью вашего текущего преобразователя. Как вы упомянули, вы можете выполнить расчет в своей модели представления или изменить преобразователь на IMulitValueConverter
.
Исходя из вашего конкретного сценария (преобразователь привязан к классу ViewModel и некоторым его свойствам), я бы склонился к реализации логики в ViewModel.
Хм, вы не показываете полную реализацию. Но я думаю, что он должен обновиться, если значение, привязанное к графическому интерфейсу, предоставляет PropertyChanged-Event.
С уважением