-1
我正在處理WPF應用程序。此應用程序具有一個主窗口(主視圖),可以將數據綁定到主視圖模型。這個主視圖是實例化主視圖模型。如何將視圖綁定到WPF中已有的視圖模型?
在此主窗口中,以編程方式創建子視圖(即usercontrols)。主窗口具有允許用戶選擇不同視圖的下拉列表。每個用戶控件視圖都有一個相應的視圖模型。
當用戶選擇下拉選項時,會觸發一個新的視圖模型被創建。然後我用數據模板與模板視圖模型到相關觀點的一個實例,如下圖所示:
<DataTemplate DataType = "{x:Type ViewModels:MyViewModel}">
<Views:MyView />
</DataTemplate>
我的問題:我該如何去有關數據綁定「MyView的」到「MyViewModel」?我假設我需要爲MyView.xaml添加適當的數據上下文,但是,我不知道如何做到這一點,因爲'MyView'沒有創建'MyViewModel'的實例。我基本上想要將我的視圖綁定到以前存在的視圖模型上。有任何想法嗎?
編輯:事實證明,我的看法自動databinds到我的視圖模型的數據模板。不過,我不確定爲什麼這只是神奇的作品。這裏發生了什麼?
這並不神奇。這就是WPF的_designed_和_documented_。當WPF將模板映射到您的視圖模型對象時,它必然具有您的視圖模型對象引用,並且它只是簡單地將模板的頂級元素的'DataContext'設置爲該視圖模型。它實際上非常簡單,比WPF爲了實際查找首先使用的模板(爲什麼不認爲_that_部分是魔術?)要簡單得多。 –