並提前感謝您的指導。我是MVVM的新手,我一直在通過文章學習。我想我已經走得很遠了,但有一件事似乎讓我感到難過。我如何(不在代碼中使用代碼)自動綁定到我想要的視圖?據我瞭解,如果做得對,這就是模式應該如何工作。我可以使用主窗口xaml中的代碼來完成這一切,並且我甚至正確創建了一個資源字典(因爲我可以在直接窗口中訪問它)。我無法進入「自動化」的下一步。 「這可能是我的設計,因爲我對這種模式不熟悉,我完全服從我做這一切都是錯誤的可能性。這是我的...MVVM - 我如何將視圖模型綁定到視圖
我有一個主窗口。這是一個3行的網格。第一行是一個菜單。最下面的一行是一個狀態欄。中間是一個堆棧面板,根據菜單選擇動態加載內容。
我有2個視圖用於填充此堆棧面板。一個只有一個樣式文本框(幫助&關於。)另一個本身是一個複合視圖:一個搜索面板,一個結果網格和一個詳細面板全部加載到碼頭管理器框架中。
在後面的主窗口代碼中,當用戶單擊菜單選項時,我清除堆棧面板的子項,實例化視圖模型,實例化將視圖模型傳入其中的視圖,然後將新視圖添加到堆棧的孩子。這工作正常,但我不認爲它符合模式。
正如我所提到的,我有資源字典,但我不知道如何將它與堆棧面板相關聯。我假設我必須使用綁定,但我無法弄清楚如何綁定到資源字典和/或如何告訴它在命令上更改視圖。
我已經閱讀過將所有可用視圖模型添加到視圖模型中的只讀列表的文章,該視圖模型本質上充當主寡婦和實際視圖模型之間的需求。這看起來不錯,但我不明白爲什麼需要資源字典。此外,這些示例是嚮導實現,在這種情況下,這似乎是一個好方法,但我無法想象爲具有100個視圖模型的應用程序執行此操作。
再一次,對我的無知感到抱歉,但我希望有人能指引我走向正確的方向。正如我所說,我讀過很多文章(喬希史密斯,戴夫希爾等),但我仍然沒有建立聯繫,所以我希望得到一些具體的指導。 (我的確有WPF Unleashed的方式,但我希望在此之前取得一些進展。)
任何人都可以幫忙嗎?
沒有足夠的時間來回答這個問題,但也許這會讓你開始。在資源字典中,您可以爲ViewModel類型設置默認視圖。然後,當您將ViewModel的實例放置爲某種ItemPresenter的內容時,它將使用該默認實例並魔術般地顯示ViewModel的正確視圖。然後你所要做的就是創建一個帶有區域的窗口(或者一些這樣的窗口,查看它們)並使用區域管理器填充區域。在這裏看到的問題http://stackoverflow.com/questions/5767759/changing-between-views-using-mvvm-light/5769233#5769233 – 2011-04-28 19:03:23
我想我明白了,但你可以驗證只是爲了確保?資源字典僅僅是關聯特定視圖和視圖模型的捷徑。但儘管如此,無論以何種方式選擇這樣做,您仍然需要在某處說明「何時觸發此事件,清除現有內容並添加此新內容」。是嗎?似乎有更好的方法來處理內容切換,例如您的區域經理。我認爲當我讀到'...沒有代碼後面......'時,我感到困惑。'我認爲這意味着內容切換代碼不存在。 – panania 2011-05-16 17:08:34