我目前正在处理的项目是文本编辑器类型的应用程序。我想知道如何处理自定义视图选项。例如。我TextBox
的字体系列,大小,粗体和颜色。我的编辑器选项卡是视图中的EditorTabViewModel
,是自定义用户控件MarkdownEditor
。它基本上是一个文本框,带有一些粗体/斜体等按钮。我想知道如何以某种方式设置自定义用户控件/编辑器的选项,就像我的应用程序的OptionsView
一样?
我渲染编辑器的方式是
<Window.Resources>
<DataTemplate DataType="{x:Type vm:EditorTabViewModel}">
<me:MarkdownEditor />
</DataTemplate>
</Window.Resources>
MarkdownEditor
是一个用户控件,用于公开显示属性以设置字体,颜色等。
更新:也是因为应用中可能有很多MarkdownEditor
,我希望选项是全局的
答案 0 :(得分:2)
没有什么可以阻止您在ViewModel中使用View构造...尤其是如果您将ViewModel视为View的模型(而不是模型的视图)。并非所有纯粹主义者都认为这是一个好主意。然而,大多数实用主义者都这样做。
在EditorTabViewModel
中拥有FontWeight,FontColor,FontSize等属性对您有用,然后您可以在MarkdownEditor
的属性中绑定它们。它允许您通过ViewModel动态更改文本的UI属性。
如果您是纯粹主义者,并且您不希望ViewModel知道WPF特定的View构造,您可以创建自己的文本格式化类,称为TextFormatting
。 TextFormatting
可以包含您自己要表达的信息表示(粗体,斜体,颜色,字体大小等)。然后,您可以使用附加的属性/行为将TextFormatting
对象绑定到MarkdownEditor
。附加的属性/行为将负责将格式化表示映射到WPF表示。
如果您有不同的View(WinForms / WPF)可能使用相同的ViewModel,那么第二种方式非常有用,因为它仍然与视图引擎无关。它还增加了第一个选项不具备的复杂性。