这是另一个。
我有两个ViewModel:MainViewModel
和ConnectionViewModel
还有两种观看:MainWindow
和ConnectionView
自动绑定工作很奇怪,每个视图模型都会进入其视图。
问题是ConnectionViewModel
在其构造函数中采用Connection
模型参数。因此,当它需要实例化时,我会在输出窗口中收到此消息(感谢记录器):
构造函数无效,因为无法从依赖项解析程序解析参数“connection”
public ConnectionViewModel(Connection connection, IMessageService messageService, IAnotherService anotherService)
因此在Connection
内获得空ConnectionViewModel
。
我可能错过了(少数)步骤。是不是应该使用viewmodel创建模型?我是否必须事先进行实例化,如果是的话,在哪里?或者我必须先注册?
答案 0 :(得分:0)
好的,我明白我错过了什么。
嵌套UserControls的使用最初是关于列表的;从这个角度来看,您的父ViewModel包含模型的集合属性是有意义的。
由于我只有一个Connection
,而不是一个列表,并希望将所有内容干净地分开,所以我没有考虑在Connection
中添加MainViewModel
,但是您仍然必须将属性绑定为XAML中的UserControl的DataContext 。
我的MainWindow.xaml中有<views:ConnectionView />
,MainViewModel
几乎没有。
我需要的是在MainViewModel中有一个Connection
属性:
public class MainViewModel : ViewModelBase
{
public MainViewModel(IMessageService)
{
Connection = new Connection();
}
public Connection Connection
{
get { return GetValue<Connection>(ConnectionProperty); }
set { SetValue(ConnectionProperty, value); }
}
public static readonly PropertyData ConnectionProperty = RegisterProperty("Connection", typeof(Connection));
/*...*/
}
和xaml中的绑定:
<views:ConnectionView DataContext="{Binding Connection}"/>