Я уже некоторое время делаю программу Wpf. Но когда я создаю приложение и создаю несколько моделей просмотра. И мне нужно получить доступ к свойству в другой модели представления.
Итак, чтобы получить к нему доступ. Мне нужно, чтобы каждая модель представления была статической.
Затем я искал, как модель представления должна общаться друг с другом.
Тогда я нашел ответ здесь
https://stackoverflow.com/questions/4892731/wpf-mvvm-how-do-viewmodels-communicate-with-each-other
Итак, я искал агрегатор призмы и нашел учебник.
https://www.c-sharpcorner.com/UploadFile/5ffb84/prism-event-aggregator-in-wpf-with-mvvm/
Потом я последовал за ним.
так же, как учебник. Я добавил event class в папку с моделью
А вот код
namespace MdbMerge.Model
{
public sealed class Event
{
#region Class Properties
internal static Event EventInstance
{
get
{
return eventInstance;
}
}
#endregion
#region Instance Properties
internal IEventAggregator EventAggregator
{
get
{
if (eventAggregator == null)
{
eventAggregator = new EventAggregator();
}
return eventAggregator;
}
}
#endregion
#region Constructors
private Event()
{
}
#endregion
#region Class Fields
private static readonly Event eventInstance = new Event();
#endregion
#region Instance Fields
private IEventAggregator eventAggregator;
#endregion
}
}
но когда я устанавливаю контекст данных моей модели представления, это дает мне ошибку
DataContext = new MdbMergeViewModel(MdbMerge.Model.Event.EventInstance.EventAggregator);
Это говорит. MdbMerge does not contain a definition for model.
Итак, как я могу решить эту проблему?
Почему Методы внутри не читаются?
Вот скриншот структуры моей программы
Спасибо.
@Haukinger, мне нужно получить доступ к собственности. для того, чтобы эта модель представления знала, может ли быть выполнена команда. Я делаю это неправильно? Спасибо
Как сказал @Haukinger, это не кажется правильным путем. Модель представления должна представлять данные только из модели в представление. Если ViewModel требует дополнительной информации, то она, вероятно, должна иметь ссылку на модель, в которой хранится эта информация. ViewModel также не должны быть статичными. Я думаю, что проблема, с которой вы столкнулись, заключается в том, что у вас есть конфликты пространства имен и классов (модель и MdbMerge) - (редактировать несколько конфликтов)
Не могли бы вы дать мне ссылку на хороший учебник по mvvm? Спасибо. Значит, я делал это неправильно





i need to access a property in a different view model- значит вы делаете это неправильно. Модели представлений предоставляют данные представлениям, а не другим моделям представлений.