ViewModelLocator.LocateForView返回新的Model,而不是ContentControl绑定的模型

时间:2011-09-13 15:25:29

标签: wpf caliburn.micro

我在xaml中有一个ContentControl,定义为:

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

我使用View.Model,因为控件嵌入在停靠面板中。

我的ViewModel已定义属性,并在ViewModel的构造函数中设置,并使用构造函数注入来创建实例。

View被实例化,但是我无法访问在ViewModel中创建的模型,它似乎在尝试从View的xaml.cs构造函数中获取实例时创建了一个新模型。

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

如何在创建View时正确获取应与View关联的模型?

1 个答案:

答案 0 :(得分:0)

如果ContentControl嵌入在停靠面板中,您只需将ContentControl命名为x:Name="ProductionGrid“,就不需要Micro:View.Model="{Binding ProductionGrid}"

  

View实例化,但我无法访问该模型   在ViewModel中创建,它似乎在尝试时创建一个新模型   从View的xaml.cs构造函数中获取实例。

你的意思是ViewModel被实例化了吗?

所以绑定有效吗?我不得不看,但我不知道CM是否会从ProductionGrid找到ProductionGridView,它可能,我不确定。 ProductionGridViewModel和ProductionGridView可以工作。

你不需要在xaml.cs构造函数中编写任何代码,事实上,我删除了xaml.cs文件。