1

背景 :-

我有一个 wpf 视图,其中包含一个组合框,该组合框由使用 caliburn micro/ninject 和 mvvm 模式的视图模型填充;此视图还包含一个堆栈面板区域。当用户从组合框中选择适当的选项时,我将适当的用户控件插入到堆栈面板中,向用户呈现到相关显示的无缝过渡。

显示在堆栈面板中的每个“嵌套”用户控件都有自己的视图模型,由 caliburn micro 自动关联。

问题 :-

“嵌套”用户控件绑定都尝试引用父视图模型,而不是专门与它们关联的视图模型。

最初,我可以通过指定来解决这个问题:-

<UserControl.DataContext>
    <vm:UserControlSpecificViewModel/>
</UserControl.DataContext>

但这需要视图模型中的无参数构造函数,但我需要能够将参数传递给此视图模型,以便 Ninject 可以注入诸如 EventAggregator 之类的对象。

由于我对 WPF 还很陌生,所以在圆圈中四处走动,因此将不胜感激。

谢谢。

詹姆士。

4

1 回答 1

0

解决您的问题的一种方法可能是在代码中初始化您的视图模型并调用适当的构造函数。如果您不喜欢 WPF 应用程序中的代码,那么我想您可能只是将视图模型绑定到IEventAggregator对象。

XAML:

<UserControl1 x:Name="myUserControl">
</UserControl>

代码隐藏:

public MainWindow() // Constructor for window
{
    InitializeContext();
    MyViewModel vm = new MyViewModel(...);
    myUserControl.DataContext = vm;
}
于 2012-11-19T16:17:39.437 回答