簡體   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