MVVM User Control Issue - PullRequest
       8

MVVM User Control Issue

1 голос
/ 22 марта 2010

У меня проблема с командами в приложении MVVM (я только изучаю MVVM, так что будьте проще).

Допустимый XHTML http://www.hughgrice.com/mvvmproblem.png

MyClassViewModel установлен в текстовый текст для MainForm1,MyList привязан к текстовому тексту UserControl1, и каждый элемент в списке представлен UserControl2.Я пытаюсь запустить MyCommand в UserControl2, используя следующее:

<CheckBox IsChecked="{Binding MyBool}" Command="{Binding Path=MyCommand}" CommandParameter="{Binding}">

В выводе появляется следующая ошибка:

System.Windows.Data Error: 39 : BindingExpression path error: 'MyCommand' property not found on 'object' ''MyObject''

Из этой ошибки я знаю, что WPF ищетКоманда в объекте, привязанном к UserControl2, мне действительно нужно, чтобы он искал команду в текстовом тексте MainForm1 (MyClassViewModel).

Можно ли всплыть подобными командами, и если да, то как это делается??

Хорошее ли решение - использовать команду?

1 Ответ

1 голос
/ 22 марта 2010

Ну, похоже, ваша команда относится только к UserControl2.Поэтому вам нужно будет добавить ICommand к вашему MyObject (который привязан к UserControl2, как вы сказали) или изменить привязку.
Имеет смысл, что WPF выдает эту ошибку привязки, потому что UserControl2 имеет DataContext 'MyObject',поэтому он не имеет ни малейшего представления о MyCommand, указанном в MyClassViewModel.

Так что я либо расширил бы MyObject, чтобы он содержал ICommand;
Или изменил привязку на что-то вроде этого:

<CheckBox IsChecked="{Binding MyBool}" 
          Command="{Binding RelativeSource={RelativeSource FindAncestor, 
                    AncestorType={MainForm1}}, Path=DataContext.MyCommand}" 
          CommandParameter="{Binding}">

Не уверен насчет DataContext.MyCommand, возможно, выможно просто использовать MyCommand.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...