WPF / C # / MVVM: нужна помощь в реализации пользовательских параметров просмотра для управления пользователями - PullRequest
1 голос
/ 29 октября 2010

Проект, над которым я сейчас работаю, - это приложение типа текстового редактора. Мне интересно, как я могу обрабатывать пользовательские параметры просмотра. например. семейство шрифтов, размер, полужирный, цвета для моего TextBox. Моя вкладка редактора - EditorTabViewModel, в представлении - пользовательский элемент управления MarkdownEditor. Это в основном текстовое поле с некоторыми кнопками для полужирного / курсивного и т. Д. Мне интересно, как я могу каким-то образом установить параметры для пользовательского управления / редактора, как OptionsView моего приложения?

способ визуализации редактора

<Window.Resources>
    <DataTemplate DataType="{x:Type vm:EditorTabViewModel}">
        <me:MarkdownEditor />
    </DataTemplate>
</Window.Resources>

MarkdownEditor - это пользовательский элемент управления, который предоставляет общедоступные свойства отображения для установки шрифтов, цветов и т. Д.

ОБНОВЛЕНИЕ : также, поскольку в приложении может быть много MarkdownEditor с, я хочу, чтобы параметры были глобальными

1 Ответ

2 голосов
/ 29 октября 2010

Ничто не мешает вам иметь конструкции View в вашей ViewModel ... особенно если вы рассматриваете ViewModel как модель View (в отличие от представления модели).Не все пуристы думают, что это хорошая идея.Однако большинство прагматиков делают это.

Наличие таких свойств, как FontWeight, FontColor, FontSize и т. Д. В вашем EditorTabViewModel, сработало бы для вас здесь, и вы можете затем связать их в свойствах MarkdownEditor.Это позволит вам динамически изменять свойства пользовательского интерфейса текста через ViewModel.

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

Выполнение этого вторым способом очень полезно, если у вас есть разные представления (WinForms / WPF), которые могут использовать один и тот же ViewModel, посколькуэто остается видом двигателя независимым.Он также добавляет уровень сложности, которого нет в первом варианте.

...