[英]WPF/C#/MVVM: Need Some Help Implementing Custom View Options for User Control
我目前正在从事的项目是一个文本编辑器类型的应用程序。 我想知道如何处理自定义视图选项。 例如。 我的TextBox
的字体系列、大小、粗体、颜色。 我的 Editor Tab 是 View 内的EditorTabViewModel
是自定义用户控件MarkdownEditor
。 它基本上是一个带有一些粗体/斜体等按钮的文本框。我想知道如何以某种方式从我的应用程序的OptionsView
中设置自定义用户控件/编辑器的选项?
我渲染编辑器的方式是
<Window.Resources>
<DataTemplate DataType="{x:Type vm:EditorTabViewModel}">
<me:MarkdownEditor />
</DataTemplate>
</Window.Resources>
MarkdownEditor
是一个用户控件,它公开了用于设置字体、颜色等的公共显示属性。
更新:由于应用程序中可能有许多MarkdownEditor
,我希望选项是全局的
没有什么可以阻止您在 ViewModel 中使用 View 构造......特别是如果您认为 ViewModel 是 View 的模型(而不是模型的视图)。 并非所有纯粹主义者都认为这是一个好主意。 然而,大多数实用主义者都这样做。
在EditorTabViewModel
中拥有 FontWeight、FontColor、FontSize 等属性在这里对你有用,然后你可以将它们绑定到MarkdownEditor
的属性中。 它允许您通过 ViewModel 动态更改文本的 UI 属性。
如果您是一个纯粹主义者,并且您不喜欢让 ViewModel 了解 WPF 特定的 View 构造,您可以创建自己的文本格式化类,称为TextFormatting
之类的东西。 TextFormatting
可以包含您自己想要传达的信息的表示形式(粗体、斜体、颜色、字体大小等)。 然后,您可以使用附加的属性/行为将该TextFormatting
对象绑定到MarkdownEditor
。 附加的属性/行为将负责将格式表示映射到 WPF 表示。
如果您有可能使用相同 ViewModel 的不同视图 (WinForms/WPF),则第二种方式非常有用,因为它仍然与视图引擎无关。 它还增加了第一个选项没有的复杂性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.