从XAML将ViewModel传递给User Control构造函数

时间:2015-04-15 14:10:01

标签: c# .net wpf mvvm dependency-injection

在我的MVVM应用程序中,我正在尝试创建一个可在多个应用程序之间共享的可重用用户控件,这里是构造函数

public MyUserControl(IMyViewModel viewModel)
{
    InitializeComponent();
    DataContext = viewModel;
}

所以我的计划是每个应用程序只将它自己的viewmodel提供给共享视图。

现在的问题是如何将viewmodel对象从XAML代码传递给构造函数:

<my:MyUserControl "somehow pass a viewmodel object from here">

谢谢

1 个答案:

答案 0 :(得分:5)

你不能,你需要一个无参数的构造函数。你能做的最好就是直接绑定:

<my:MyUserControl DataContext="{Binding Path.To.ViewModel}">

实际上,我并不完全正确。在WPF 4中,您可以使用arguments directive。但我真的不会,这不是真正惯用的WPF。