MVVM-навигация | Кнопки внутри просмотраC#

Место общения программистов C#
Ответить
Гость
 MVVM-навигация | Кнопки внутри просмотра

Сообщение Гость »

Привет, сообщество разработчиков stack overflow!
Я новичок в MVVM и работал над парой руководств, чтобы освоить некоторые основы (привязки, RelayCommand и т. д.).
Приложение с одним окном Пока работает довольно хорошо, но теперь мне нужно добавить логин и одно или два других «представления». Я не ожидал, что это будет так больно.... :D
Поработав над руководством на (Github), я смог выяснить, разместим ли я кнопку/команду из MainWindow.xaml, например, в /view/Home.xaml, команда все еще срабатывает, CurrentView также обновляется, но MainWindow не обновляется/не отображается? Итак.... Я очень запутался в том, что происходит, надеюсь, у кого-нибудь есть логическое объяснение.
После изучения еще пары примеров переполнения стека я прочитал о MVVM свет и обмен сообщениями, это способ заставить все работать? Если да, может ли кто-нибудь показать простой пример. не уверен, что существует простой пример.
Большое спасибо,
Все полезно
Алекс
PS: Я обновил свой репозиторий навигационных тестов github.com, который точно показывает проблему.
Надеюсь, что есть простое решение этой проблемы: D
ОБНОВЛЕНИЕ:
Я обновил свой код и пришел к выводу, что мне нужно использовать либо обмен сообщениями MVVM-light, либо агрегатор событий Prism.
Я решил попробовать агрегатор событий Prism, «попробовал» реализовать интерфейс и добавил агрегатор внутри моего конструктора в обеих моделях представления, но теперь все мое решение больше не работает.
Что я здесь делаю не так?
NavigationViewModel.cs
public class NavigationViewModel : ViewModelBase
{
private IEventAggregator _eventAggregator;

public NavigationViewModel(IEventAggregator eventAggregator)
{
LoginCommand = new RelayCommand(Login);
PwResetCommand = new RelayCommand(PwReset);
LogoutCommand = new RelayCommand(Logout);

// Startup Page
CurrentView = new LoginViewModel();

//Prism Event Aggregator
_eventAggregator = eventAggregator;

eventAggregator
.GetEvent()
.Publish(true);
}

public class MyEvent : PubSubEvent
{
}

WorkOrderViewModel.cs
public class WorkOrderViewModel : ViewModelBase
{
private IEventAggregator _eventAggregator;

public WorkOrderViewModel(IEventAggregator eventAggregator)
{
// Prism Event Aggregator
_eventAggregator = eventAggregator;

eventAggregator
.GetEvent()
.Subscribe(OnIsSavedEvent);
}

public void OnIsSavedEvent(bool isSaved)
{
bool IsModified = !isSaved;
}
}

NavigationView.xaml.cs:
public partial class NavigationView : UserControl
{
public NavigationView()
{
InitializeComponent(); //

Подробнее здесь: https://stackoverflow.com/questions/781 ... de-of-view
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»