繁体   English   中英

WPF/C#/MVVM:需要一些帮助来实现用户控制的自定义视图选项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM