Как обновить ViewModel из другой ViewModel в WPF MVVM?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как обновить ViewModel из другой ViewModel в WPF MVVM?

Сообщение Anonymous »

У меня есть приложение, которое я использую для выбора некоторых материалов из репозитория Git.
Это базовый дизайн приложения.
Все окно имеет ViewModel, внутри которого я определил два экземпляра моделей представления A и B, представляющих два пользовательских элемента управления. Модель представления B представляет собой строку состояния, в которой есть только строка, показывающая текст, который может быть чем угодно. Модель представления A — еще один пользовательский элемент управления, в котором я могу искать пользовательские истории. Итак, в основном я хочу показать итоги из модели представления A в модели представления B в пользовательском интерфейсе. Я попытался внедрить виртуальную машину B в A, но это не отразилось в окне. Как я могу решить эту проблему с помощью шаблона WPF MVVM?
Это фактический дизайн приложения.
Это код файла MainWindow.xaml, который имеет два элемента управления содержимым: один — выбранное окно, которое может меняться в зависимости от параметра, выбранного пользователем в левой части. Затем есть окно строки состояния, которое представляет собой просто строку состояния, в которой я хочу отображать некоторые данные в зависимости от действий в окне, выбранном пользователем. Модель представления главного окна приведена ниже:

Код: Выделить всё

using ResponsiveWorkManager.Commands;
using System.Reflection;
using System.Windows;
using System.Windows.Input;

namespace ResponsiveWorkManager.ViewModels
{
public class MainWindowViewModel : ViewModelBase
{
private ICommand logoutClick;
private ICommand menuItemClick;
private ViewModelBase selectedWindow;
private StatusBarViewModel statusBarVM;
private string versionNumber;

public MainWindowViewModel()
{
this.StatusBarVM = new StatusBarViewModel();
this.selectedWindow = new WorkItemsViewModel(this.StatusBarVM);
this.VersionNumber = $"Ver - {Assembly.GetEntryAssembly().GetName().Version.ToString()}";
}

public ICommand LogoutClick
{
get
{
return logoutClick ?? (logoutClick = new RelayCommand(CloseWindow));
}
}

public ICommand MenuItemClick
{
get
{
return menuItemClick ?? (menuItemClick = new RelayCommand(CreateWorkItemObject));
}
}

public ViewModelBase SelectedWindow
{
get { return selectedWindow; }
set
{
if (selectedWindow != value)
{
selectedWindow = value;
OnPropertyChanged(nameof(SelectedWindow));
}
}
}

public StatusBarViewModel StatusBarVM
{
get { return statusBarVM; }
set
{
if (statusBarVM != value)
{
statusBarVM = value;
OnPropertyChanged(nameof(StatusBarVM));
}
}
}

public string VersionNumber
{
get { return versionNumber;  }
set
{
if (versionNumber != value)
{
versionNumber = value;
OnPropertyChanged("VersionNumber");
}
}
}

private void CloseWindow(object winHandle)
{
var myWindow = (Window)winHandle;
myWindow.Close();
}

private void CreateWorkItemObject(object windowName)
{
switch ((WindowName)windowName)
{
case WindowName.WorkItems:
SelectedWindow = new WorkItemsViewModel(this.StatusBarVM);
break;

case WindowName.Folders:
SelectedWindow = new FoldersViewModel();
break;

case WindowName.LeaveDetails:
SelectedWindow = new LeaveDetailsViewModel();
break;
}
}
}
}
Что я пытаюсь сделать: когда в выбранном окне происходят какие-либо обновления, я хочу отправить некоторые тексты или статус в элемент управления строкой состояния. Выбранное окно и строка состояния имеют свои собственные модели представления. Поэтому я хочу отправить некоторые данные из виртуальной машины выбранного окна в виртуальную машину строки состояния, чтобы они отразились в окне.

Подробнее здесь: https://stackoverflow.com/questions/792 ... n-wpf-mvvm
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как обновить ViewModel из другой ViewModel в WPF MVVM?
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как обновить ViewModel из другой ViewModel в WPF MVVM?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как обновить ViewModel из другой ViewModel в WPF MVVM?
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Проблема с моей MVVM, я не могу изменить реквизиты ViewModel из другой ViewModel, пользовательский интерфейс не обновляе
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Проблема с моей MVVM, я не могу изменить реквизиты ViewModel из другой ViewModel, пользовательский интерфейс не обновляе
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

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