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