构造函数无效,因为无法解析参数

时间:2015-01-30 11:08:57

标签: c# wpf xaml catel

这是另一个。

我有两个ViewModel:MainViewModelConnectionViewModel 还有两种观看:MainWindowConnectionView

自动绑定工作很奇怪,每个视图模型都会进入其视图。 问题是ConnectionViewModel在其构造函数中采用Connection模型参数。因此,当它需要实例化时,我会在输出窗口中收到此消息(感谢记录器):

构造函数无效,因为无法从依赖项解析程序解析参数“connection”

public ConnectionViewModel(Connection connection, IMessageService messageService, IAnotherService anotherService)

因此在Connection内获得空ConnectionViewModel

我可能错过了(少数)步骤。是不是应该使用viewmodel创建模型?我是否必须事先进行实例化,如果是的话,在哪里?或者我必须先注册?

1 个答案:

答案 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}"/>