Ничто не мешает вам иметь конструкции View в вашей ViewModel ... особенно если вы рассматриваете ViewModel как модель View (в отличие от представления модели).Не все пуристы думают, что это хорошая идея.Однако большинство прагматиков делают это.
Наличие таких свойств, как FontWeight, FontColor, FontSize и т. Д. В вашем EditorTabViewModel
, сработало бы для вас здесь, и вы можете затем связать их в свойствах MarkdownEditor
.Это позволит вам динамически изменять свойства пользовательского интерфейса текста через ViewModel.
Если вы пурист, и вам не нравится, когда ViewModel знает о конкретных конструкциях View WPF, вы можете создать свойсобственный класс форматирования текста, называемый что-то вроде TextFormatting
.TextFormatting
может включать ваше собственное представление информации, которую вы хотите сообщить (полужирный, курсив, цвет, размер шрифта и т. Д.).Затем вы можете связать этот TextFormatting
объект с MarkdownEditor
, используя прикрепленное свойство / поведение.Присоединенное свойство / поведение будет отвечать за отображение представления форматирования в представление WPF.
Выполнение этого вторым способом очень полезно, если у вас есть разные представления (WinForms / WPF), которые могут использовать один и тот же ViewModel, посколькуэто остается видом двигателя независимым.Он также добавляет уровень сложности, которого нет в первом варианте.