Мне трудно понять, что вы говорите, поэтому мой ответ будет основан на моей интерпретации. Вы должны рассмотреть возможность размещения образца (упрощенного) того, что вы пытаетесь сделать.
1) Я думаю, вы не понимаете, что делает MVVM. MVVM - это в основном шаблон на основе привязки . Ваша модель представления должна предоставлять свойства, содержащие бизнес-объекты, и ваше представление должно просто привязываться к этим свойствам. Если я вас неправильно понимаю, и это то, что вы делаете, то ваша проблема в том, что ваше представление должно знать, когда обновляются свойства (после десериализации вашего xaml и т. Д.). Есть два способа сделать это: INotifyPropertyChanged
интерфейс вашей модели представления, или заставить вашу модель представления наследоваться от DependencyObject
, и установить свойства зависимостей свойств. Я не буду вдаваться в подробности, потому что это большая тема, которую вы должны изучить в Google, прежде чем принимать решение.
2) Вообще говоря, вы не должны использовать события щелчка внутри своего представления, если вы используете MVVM. Вместо этого создайте свойства для модели представления типа ICommand
(и создайте соответствующие реализации ICommand или используйте реализацию DelegateCommand
(google it), которая позволит вам использовать делегатов для реализации интерфейса. Идея заключается в том, что ваш view привязывается к свойству и выполняет обработчик непосредственно внутри viewmodel.
3) Если вы хотите передать информацию из модели представления в представление, то вы должны создать событие в модели представления и подписаться на него в представлении, но это последнее средство, которое будет использоваться только в случаях, например при отображении новое окно и т. д. Как правило, вы должны использовать привязку.
4) Чтобы быть более точным в том, что вы делаете, вы должны привязать свойство ItemsSource вашей Grid к какому-либо свойству модели представления. Обратите внимание, что свойство модели представления должно иметь тип ObservableCollection<T>
, если вы хотите иметь возможность добавлять элементы и получать мгновенные обновления.
Надеюсь, это поможет.