我有一個應用程序,其中我有一個主視圖模型的視圖包含一個tabcontrol,其中每個選項卡都有自己的視圖和viewmodel(可能更多)。我相信這是一個很常見的設計。現在,我想打開新的標籤(通過實例化新的視圖模型並將它們添加到工作空間的集合中),方法是從這些標籤中的控件觸發命令。問題在於命令由內部視圖模型接收,該內部視圖模型控制選項卡,而不是控制選項卡控件的外部視圖模型。最佳做法是什麼?我能想到的所有解決方案都有點「黑客」(給viewmodel一個對其父視圖模型的引用,從父級訂閱一個孩子的事件...)。我假設有一個很好的解決方案。使用viewmodel命令打開新標籤
例如,從「實體列表」視圖中,單擊「新建」按鈕或選擇一行應打開具有「實體詳細信息」類型的視圖的另一個選項卡。但是,該命令將被「實體列表」視圖的視圖模型接收,該視圖模型綁定了該選項卡,而不是綁定tabcontrol的「工作空間列表」視圖模型。
我決定使用類似的東西。我有一個單身的ServiceRegister,一個對象可以註冊自己作爲某種類型的服務。所以作爲tabcontrol的綁定的viewmodel確實......註冊(this)。內部視圖模型執行GetServices ()。 IOpenWorkspaces接口包含一個方法,一個參數化的OpenWorkspace。 –
svinja
2012-02-22 13:38:49