@Pitonist224

Как правильно сделать несколько окон в wpf с использованием mvvm паттерна?

Не могу найти адекватной статьи по поводу того, как сделать многооконное приложение на wpf с использованием mvvm.

По заданию нужно при нажатии на кнопку в главном окне открыть ещё одно окно с графиком, данные для которого будут переданы из MainViewModel.
  • Вопрос задан
  • 1455 просмотров
Решения вопроса 1
@Pitonist224 Автор вопроса
Не знаю на сколько это верное решение, но вот что я сделал погуглив ещё немного.
Создал WindowService
public interface IWindowService
    {
        public void ShowWindow<T>(object dataContext) where T : Window, new();
    }

public class WindowService : IWindowService
    {
        public void ShowWindow<T>(object dataContext) where T : Window, new()
        {
            var window = new T
            {
                DataContext = dataContext
            };

            window.Show();
        }
    }


Создал само окно GraphWindow.xaml и его ViewModel - GraphViewModel

А в MainViewModel создал вот такой метод
// PS. ws = WindowService
public void ExecuteShowGraph(object parameter)
        {
            ws.ShowWindow<GraphWindow>(new GraphViewModel(Коллекция точек для графика));
        }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
VariusRain
@VariusRain
музыкант-программист-конструктор
На самом деле тут нет никакого секрета.
Статей нет скорее всего по тому, что вопрос не так сложен, как может показаться.
Для этого достаточно просто в дата контекст второго окна указать ту же view model
Буквально тот же экземпляр и всё.

Вы можете это сделать в момент создания экземпляра нового окна, передав this в его конструктор, например.
Ответ написан
@Pixilys
Вот видео по теме.
Клик
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы