這個問題可能更好,但基本上,這是我想要做的:有沒有辦法動態地暴露WPF中的綁定?
我正在爲我們的應用程序,像Word這樣的基本功能,但需要一些額外的工具衛生保健。
該功能被組織成邏輯組,例如,剪輯命令(剪切複製粘貼),對齊等;並且這些以帶狀控件表示。
我們需要創建一個基於上下文的這些功能混合的編輯器實例;例如有時我們想要公開「編輯」小組,有時我們想要公開「成像」小組。因此,我不希望將每個單獨的命令分成不同的類,然後將它們分組爲每個邏輯組的視圖模型,如下所示:
class Cut: ICommand {}
class Copy: ICommand {}
class ClipCommands {
public ICommand Cut { get { return _cutCommand; } }
public ICommand Copy { get { return _copyCommand; } }
}
所以現在我想弄清楚如何在主編輯器viewmodel中動態地公開這些組而不用硬編碼它們。我想到了像裝飾者模式的東西:
class ClipCommands: EditorBase
{
ClipCommands(EditorBase editor) {}
// expose my commands
// (!?) how do I expose any others already attached?
}
然後,我可以只是構建我想要的所有功能。
var editor = new EditorBase(new ClipCommands(new RedactCommands()));
但我迷失在如何公開可能已被任何其他組連接的數據綁定。這是錯誤的方法?
是的,這不是UI,而是我正在努力的虛擬機。如果我們在選項卡和它們包含的功能之間有一對一的關係,那麼每個選項卡單獨的datacontext可能會工作,但我們不這樣做。一個選項卡可能需要來自3或4個不同組命令的功能,這些命令也是基於上下文動態創建的。 – amnesia
查看編輯答案。爲每個命令創建一個通用類,讓您的ViewModel決定將哪些命令加載到集合中並編輯功能區模板,以便將按鈕綁定到ItemsSource。 –
有趣的方法,我沒有考慮使用集合的命令綁定。謝謝。 – amnesia