Доступ к контексту данных дочернего пользовательского элемента управления в родительском - PullRequest
2 голосов
/ 02 марта 2012

В моем приложении WPF + MVVM у меня есть View, в котором находится другой usercontrol.Дочерний usercontrol не следует пути MVVM (потому что я просто размещаю там объект Visio activeX), поэтому я использую код класса.

В представлении я использую этот код:

<uc:VisioControl Grid.Row="2" x:Name="visioControlUC"
        VisioFileName="{Binding ElementName=tbFullFileName,Path=Text, UpdateSourceTrigger=PropertyChanged}"/>

В том же виде у меня есть элемент Label, в котором я хочу отобразить значение поля DependencyProperty с именем SelectedNodeCustomProperties, определенное в дочернем пользовательском элементе управления

<Label x:Name="lbNodeIdValue" DataContext="{Binding ElementName=visioControlUC}" Content="{Binding Path=SelectedNodeCustomProperties.Id, UpdateSourceTrigger=PropertyChanged}"/>

Однако это не работает.Работая в режиме отладки, я вижу это исключение привязки в окне «Вывод»:

 BindingExpression path error: 'visioControlUC' property not found on 'object' ''NSDVizualizerViewModel' (HashCode=65573909)'. BindingExpression:Path=visioControlUC.SelectedNodeCustomProperties.NodeId; DataItem='NSDVizualizerViewModel' (HashCode=65573909); target element is 'Label' (Name=''); target property is 'Content' (type 'Object')

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

Спасибо,

Адриан

РЕДАКТИРОВАТЬ: человеку, который отклонил мой вопрос, может быть, вы можете объяснить, почему?Есть ли на форуме похожий вопрос, который я, возможно, не нашел?

1 Ответ

1 голос
/ 02 марта 2012

Попробуйте

<Label x:Name="lbNodeIdValue" 
       Content="{Binding ElementName=visioControlUC, 
                         Path=SelectedNodeCustomProperties.Id,
                         UpdateSourceTrigger=PropertyChanged}"/>
...