Приложение, которое я сейчас пишу, использует MVVM с шаблоном ViewModel-first. У меня XAML похож на следующее:
<ContentControl Content="{Binding FooViewModel.BarViewModel.View, Mode=OneWay}"/>
Каждая виртуальная машина является DependencyObject
. Каждое свойство DependencyProperty
. В зависимости от состояния приложения значение свойства BarViewModel
для FooViewModel
может изменяться, что приводит к изменению значения свойства View
. К сожалению, когда это происходит, новый вид не отображается, а старый остается.
Это очень расстраивает. Я думал, что если какая-то часть выражения пути изменится, привязка обновится, но это не так. Когда я использовал более мелкие выражения пути, такие как FooViewModel.View
, и я изменил значение свойства FooViewModel
, то имеет обновил ContentControl
, к которому он привязан, но не в этом случай.
Если ваше решение состоит в том, чтобы я сначала отказался от ViewModel, это не вариант, хотя я ценю ваш совет. Я должен заставить это работать как есть.
ПОЯСНЕНИЯ
Это вопрос о привязке данных , а , а не о MVVM или о том, как ее реализовать. Вы можете смело игнорировать аспекты MVVM, если это поможет вам подумать о проблеме или если у вас другое представление о том, как следует реализовывать MVVM. Это большой существующий проект, в котором шаблон проектирования MVVM не может быть изменен. (Для этого уже слишком поздно.)
Итак, с учетом сказанного, правильный вопрос, на который нужно ответить, следующий:
Учитывая выражение пути привязки, в котором каждый элемент является DependencyProperty
, а конечное свойство является представлением, связанным с ContentControl, почему изменение свойства в середине пути не приводит к обновлению привязки?