0

我正在使用 MVVM 模型,我在 WPF 主窗口中有三个用户控件,每个用户控件的 datacontext 设置为 xaml 中的不同视图模型。主窗口还附加到数据上下文中的不同视图模型。主窗口有三个按钮,应该通过命令绑定来绑定,我们如何通过xaml将主窗口按钮绑定到相应的用户控件视图模型Icommand?

4

3 回答 3

1

很难判断这是否是一个好的解决方案,因为您的应用程序架构缺少很多细节。

基于“我有一个包含 3 个用户控件的窗口并且我希望窗口上的按钮来激活控件的视图模型上的命令”的前提,一种解决方案可能是:

<Window>
    <UserControl Name="Control1" />
    <UserControl Name="Control2" />
    <UserControl Name="Control3" />

    <Button Command="{Binding ElementName="Control1", Path="DataContext.Cmd"}" />
    <Button Command="{Binding ElementName="Control2", Path="DataContext.Cmd"}" />
    <Button Command="{Binding ElementName="Control3", Path="DataContext.Cmd"}" />
</Window>
于 2013-07-18T16:30:03.410 回答
0

这有点主观,但在我看来,视图模型不应该服务于一个以上的视图。

MainWindow 的视图模型应该完全独立于 UserControl 的模型。我建议使用发布/订阅者模式通过您的应用程序发送“事件”来处理广泛使用的功能(例如参见Event Aggregator)。

于 2013-07-18T15:52:16.663 回答
0

如果您无法通过 MainWindow 的 DataContext 的直接绑定访问 ViewModels(即,如果三个 ViewModels 不在 MainWindow 的 ViewModel 中),您可以这样做:

<Button 
    Name="Button1" 
    DataContext="{Binding DataContext, ElementName=UserControl1}" 
/>

如果我很好地理解了您的要求,这应该可以工作。

于 2013-07-18T15:55:01.590 回答