Я работаю в проекте WPF, я использую MVVM patter в моем проекте.Как вызвать метод управления пользователями с помощью MVVM?
Я создал пользовательский элемент управления (также в WPF), и я хочу использовать его в своем проекте, теперь проблема заключается в том, что у меня есть метод в моем элементе управления, который мне нужно вызвать из моей модели просмотра, но я не знаю, как это сделать, как привязать к методу внутри моего элемента управления из модели представления.
Если я использую код позади, очевидно, что нет проблем, так как у меня есть прямая ссылка на мой элемент управления, поэтому я могу сделать «mycontrol.MyMethod();» m, но, конечно, это будет идти против логика шаблона MVVM.
Я попытался использовать свойство Dependency в своем пользовательском элементе управления и использовать это свойство Dependency для привязки к нему в xaml моего проекта, но это не сработало, компилятор говорит, что свойство не было найдено или не было сериализации.
Так что я буду признателен, если кто-то может рассказать немного о том, как я могу это сделать.
Edited
Насколько я понимаю, у вас есть мнение, которое все GUI, то вы модель, которая вся логика, и они у вас есть представление-модель, которая, как промежуточный уровень, используемый для привязки представления с помощью модели, верно?
Таким образом, я разработал свой проект, однако я пришел к проблеме, что мне нужен пользовательский элемент управления, текстовый блок, который запоминает, что вводил пользователь, и когда он начинает печатать, если есть слова, начинающиеся с этой буквы , эти слова показаны как предложение, как это делает Google.
Этот TextBox используется как фильтр поиска; поэтому я создал пользовательский элемент управления для этого, я добавил метод для своего пользовательского элемента управления, чтобы любое приложение, использующее мой элемент управления, добавляло элементы во внутренний массив, который содержит все строки, введенные пользователем.
Я создал пользовательский элемент управления, потому что я не мог найти какой-либо элемент управления, который ведет себя так, как я хочу.
Итак, моя проблема в том, что я добавляю свой пользовательский элемент управления в основной проект, потому что мне нужно каким-то образом вызвать метод, который добавляет элементы во внутренний массив, но, возможно, я делаю что-то не так, поэтому, если у кого-то из вас есть лучшая идея, я буду признателен, если вы поделитесь ею со мной.
Да, вы совершенно правы, таким образом, проще, однако я стараюсь, как вы мне предложили, но свойство зависимостей в моем пользовательском контроле никогда не обновляется, когда я добавляю или удаляю элемент в соответствующем свойстве в модели представления , – Vic
@Vic: это звучит как проблема с INotifyPropertyChanged или что-то подобное. Это базовое обязательное уведомление. Предложение Роберта должно сработать ... вам просто придется немного подкопать привязку. Эта статья поможет вам отлаживать привязки: http://bea.stollnitz.com/blog/?p=52 –
Я нашел два способа решить эту проблему, первый из которых заключался в том, чтобы сделать мое целевое свойство зависимым, и, следовательно, Класс View-Model будет иметь подкласс из DependencyObject. Другой способ состоял в том, чтобы иметь свойство target как общее свойство, но в наборе {} вам нужно добавить строку «base.RaisePropertyChanged (« your_property_name »); и класс View-Model будет иметь подкласс из ObservableObject. Большое спасибо, потому что без ваших комментариев я бы этого не сделал. – Vic