В моем приложении WPF + MVVM у меня есть представление, в котором размещается другой пользовательский контроль. Детский пользовательский контроль не соответствует методу MVVM (потому что я просто размещаю там объект ActiveX Visio), поэтому я использую код за классом.Доступ к контексту данных дочернего пользователя в родительском
В представлении я использую этот код:
<uc:VisioControl Grid.Row="2" x:Name="visioControlUC"
VisioFileName="{Binding ElementName=tbFullFileName,Path=Text, UpdateSourceTrigger=PropertyChanged}"/>
В том же виде, у меня есть элемент этикетки, где я хочу, чтобы отобразить значение поля DependencyProperty
имени SelectedNodeCustomProperties
, определенных на пользовательском элементе управления ребенком
<Label x:Name="lbNodeIdValue" DataContext="{Binding ElementName=visioControlUC}" Content="{Binding Path=SelectedNodeCustomProperties.Id, UpdateSourceTrigger=PropertyChanged}"/>
Однако, это не работает. Запуск в режиме отладки, я могу видеть это связывающее исключение в окне Output:
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')
Итак, почему это, что он ожидает, что пользовательский элемент управления ребенка определяется в ViewModel и как я могу установить DataContext пользователя при связывании содержимого метки?
Спасибо,
Адриан
EDIT: Для человека, который downvoted мой вопрос, может быть, вы можете объяснить, почему? Есть ли аналогичный вопрос на форуме, который я не нашел, может быть?
именно - почему downvote? – chopikadze