- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在从事的项目是一个文本编辑器类型的应用程序。我想知道如何处理自定义 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/
我是一名优秀的程序员,十分优秀!