我有一个带有ContentControl的窗口,我用它来模拟一个工作得很好的向导导航。为了重构一些代码,我在一个UserControl中提取了一个表单,我在另一个Window中以完全相同的方式使用了这个表单...
我提取的UserControl在另一个窗口上工作正常(不是向导),但不在Wizard内部的UserControl里面...我在两种情况下都使用ContentControl ......
我没有收到任何错误...我已经调试过并且在两种情况下都调用了构造函数,但是在向导内部它不会出现,只是那样。
简单窗口的代码是:
<Controls:MetroWindow x:Class="Desktop.Views.FilePropertiesViewModel">
<Grid>
<ScrollViewer VerticalScrollBarVisibility="Visible">
<ContentControl x:Name="DocumentPropertyListViewModel" />
</ScrollViewer>
</Grid>
</Controls:MetroWindow>
在后面的代码中,在我的Window的构造函数中
public DocumentPropertyListViewModel DocumentPropertyListViewModel { get; set; }
public FilePropertiesViewModel(){
this.DocumentPropertyListViewModel = new DocumentPropertyListViewModel(File.Properties, false);
}
区别如上所述(作为参考,而不是真实的代码):
<ContentControl x:Name="Wizard"> <!-- Loading plenty of UserControls>
<ContentControl x:Name="DocumentPropertyListViewModel" /> <!-- One of the UserControls has this -->
</ContentControl>
顺便说一下,我正在使用Caliburn.Micro,这就是为什么我使用ContentControl而不是普通的UserControl引用,我无法弄清楚如何以其他方式做...
我在这里做错了什么?
答案 0 :(得分:0)
你可以尝试一下......
<ContentControl x:Name="Wizard">
<ContentControl cm:View.Model="{Binding DocPropListViewProp}" />
</ContentControl>
其中DocPropListViewProp
是主窗口中DocumentPropertyListViewModel类型的viewmodel属性 viewmodel
And in the code behind, in the constructor of my Window
public DocumentPropertyListViewModel DocumentPropertyListViewModel { get; set; }
public FilePropertiesViewModel(){
this.DocumentPropertyListViewModel = new DocumentPropertyListViewModel(File.Properties, false);
}
上面的语句仍然困扰着您提供的代码片段,说明您在代码隐藏中使用了它,您的意思是ViewModel吗?
你还在用什么容器用于IoC:MEF,SimpleContainer等......?什么?