gpt4 book ai didi

c# - WPF/C#/MVVM : Need Some Help Implementing Custom View Options for User Control

转载 作者:行者123 更新时间:2023-12-03 10:30:40 26 4
gpt4 key购买 nike

我目前正在从事的项目是一个文本编辑器类型的应用程序。我想知道如何处理自定义 View 选项。例如。我的 TextBox 的字体系列、大小、粗体、颜色.我的编辑器选项卡是 EditorTabViewModel在 View 中是一个自定义用户控件 MarkdownEditor .它基本上是一个带有一些粗体/斜体等按钮的文本框。我想知道如何以某种方式为自定义用户控件/编辑器设置选项,例如 OptionsView我的应用程序?

我渲染编辑器的方式是

<Window.Resources>
<DataTemplate DataType="{x:Type vm:EditorTabViewModel}">
<me:MarkdownEditor />
</DataTemplate>
</Window.Resources>
MarkdownEditor是一个用户控件,它公开用于设置字体、颜色等的公共(public)显示属性。

更新 : 也因为可以有很多 MarkdownEditor s 在应用程序中,我希望选项是全局的

最佳答案

没有什么可以阻止您在 ViewModel 中使用 View 构造......特别是如果您认为 ViewModel 是 View 的模型(而不是模型的 View )。并非所有纯粹主义者都认为这是一个好主意。然而,大多数实用主义者都这样做。

在您的 EditorTabViewModel 中具有 FontWeight、FontColor、FontSize 等属性在这里对你有用,然后你可以将它们绑定(bind)到 MarkdownEditor 的属性中。 .它允许您通过 ViewModel 动态更改文本的 UI 属性。

如果您是一个纯粹主义者,并且您不喜欢让 ViewModel 了解 WPF 特定的 View 结构,您可以创建自己的文本格式化类,称为 TextFormatting . TextFormatting可以包含您自己对要传达的信息的表示(粗体、斜体、颜色、字体大小等)。然后你可以绑定(bind) TextFormatting反对MarkdownEditor使用附加的属性/行为。附加的属性/行为将负责将格式表示映射到 WPF 表示。

如果您有可能使用相同 ViewModel 的不同 View (WinForms/WPF),则第二种方式非常有用,因为它仍然与 View 引擎无关。它还增加了第一个选项没有的复杂性。

关于c# - WPF/C#/MVVM : Need Some Help Implementing Custom View Options for User Control,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4049133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com