2011-09-13 20 views
0

我在XAML一個ContentControl中定義爲:ViewModelLocator.LocateForView返回新的示範,而不是模型ContentControl中勢必

<ContentControl Micro:View.Model="{Binding ProductionGrid}" />   

我使用View.Model作爲控制被嵌入在對接面板。

我的ViewModel具有定義的屬性,它在ViewModel的構造函數中設置,並使用構造函數注入來創建實例。

視圖被實例化,但我無法訪問在ViewModel中創建的模型,它似乎創建一個新模型,當試圖從視圖的xaml.cs構造函數獲取實例時。

var model = Caliburn.Micro.ViewModelLocator.LocateForView(this) as DynamicDataGridViewModel; 

如何正確獲取應該與創建時視圖關聯的模型?

回答

0

如果ContentControl中嵌入對接面板,您可以直接命名ContentControl中x:Name="ProductionGrid「,不應該需要Micro:View.Model="{Binding ProductionGrid}"

的視圖被實例化,但我不能訪問,這是 在創建的模型視圖模型,它似乎創建新模型試圖 時,從視圖的xaml.cs構造獲得實例。

你的意思是視圖模型被實例化?

所以綁定的作品?我不得不看,但我不知道CM是否會從ProductionGrid中找到ProductionGridView,可能,我不確定。 ProductionGridViewModel和ProductionGridView可以工作。

您不應該需要在xaml.cs構造函數中編寫任何代碼,事實上,我刪除了xaml.cs文件。

+1

我確實嘗試過使用ContentControl名稱參數,但是,無論出於何種原因它都不起作用。對接面板是第三方。 問題是,視圖被創建,但沒有「附加」到ViewModel足夠早,我可以從視圖構造函數訪問它(也不是真的)。 通常我不會嘗試在xaml.cs中編碼,但是我試圖重新使用控件而不是重新編寫它。 最後,我讓我的ViewModel派生自ViewAware,並使用OnViewAttached來做我所需要的。無論如何,我確實必須重寫很多控件。 – tracstarr

相關問題