Как реализовать шаблон MVVM в проекте WPF с использованием библиотеки GraphSharp / QuickSharp

Примечание: я новичок во всех сферах (WPF, шаблон MVVM, библиотеки GraphSharp/QuickSharp).

Я пытаюсь отобразить простой ориентированный граф с помощью библиотеки GraphSharp. Я прошел через эту демонстрацию и написал очень похожий код (создание пользовательских типов Vertex, Edge, Graph и GraphLayout и т. Д.).

Затем я добавил свойство Status в свой пользовательский тип Vertex и внедрил шаблон данных и ресурс стиля в свой код XAML (что-то похожее на демонстрацию, приведенную выше), который применял различные стили к элементам управления вершины на основе их свойства Status. Для этого мне пришлось реализовать интерфейс INotifyPropertyChanged в моем собственном типе Vertex. У меня также есть некоторые другие коды, которые изменяют свойство Status вершин во время выполнения, вызывая изменения стиля. Все это работает, пока все хорошо.

Затем я прочитал несколько статей о том, как код WPF должен быть организован в модели, модель представления и слои представления: представление (предпочтительно только код XAML) должно общаться только с классами модели представления (через привязки), последний реализует INotifyPropertyChanged и что модель представления должна говорить только с "бизнес-логикой", реализованной в модельных классах. Все это звучит хорошо, но теперь я довольно озадачен тем, что и где:

  • Код XAML - это представление, пока все просто.

  • Пользовательский тип GraphLayout, по-видимому, принадлежит слою модели представления.

  • Я предполагаю, что пользовательские типы вершин, ребер и графов принадлежат модельному слою. За исключением того, что теперь пользовательский тип вершины реализует INotifyPropertyChanged, который, похоже, является особенностью классов модели представления.

  • Код, изменяющий свойство Status пользовательской вершины, использует функциональность базовых классов QuickGraph (например, BidirectionalGraph.OutEdges()), поэтому он должен принадлежать слою модели. Но: если пользовательский граф принадлежит модели представления, то почему класс модели вызывает класс модели представления для определения всего, что связано с бизнес-логикой.

Итак, главный вопрос: какова предпочтительная структура классов для такой программы? Какие классы принадлежат модели, представлению модели и представлению слоев?

0 ответов

Другие вопросы по тегам