1

目前我的项目中有 2 个 ViewModel。MainViewModel 当前绑定到我的 WPF 窗口,因此我在其他 ViewModel (AdventurerViewModel) 中有一个不再触发的命令。有没有办法在没有绑定 ViewModel 的情况下触发该命令,或者我的所有命令都需要在 MainViewModel 中?有没有一种组织命令的好方法可以帮助我避免将来出现这种情况?任何建议将不胜感激。

编辑:一些代码

从我的 XAML

按钮 Grid.Column="3" Grid.Row="1" Content="IncreaseLevel" Command="{Binding increaseLevel}"

AdventurerViewModel.cs

public ICommand IncreaseLevel { get { return new RelayCommand(IncreaseLevelExecute, CanIncreaseLevelExecute); } }

    private bool CanIncreaseLevelExecute()
    {
        return true;
    }

    private void IncreaseLevelExecute()
    {
        Level++;
    }
4

2 回答 2

1

首先确保正确拆分 ViewModel 并将命令放在正确的 ViewModel 中。

之后,您可能仍然希望通知其他 ViewModel 当前 ViewModel 中的更改。在这种情况下,您可以查看 ViewModel 之间的消息传递系统,以便 ViewModel 可以订阅特定事件并对其做出响应。

于 2013-05-30T06:42:42.537 回答
0

每个视图使用一个 ViewModel。如果您使用 Window,那么您应该使用一个 ViewModel。现在在我的项目中有一个 Window,其中有 2 个用户控件,每个 UserControl 都有自己的 ViewModel 以及 Window 的 ViewModel。我可以将所有内容放在一个 ViewModel 中,但这样更干净,但对于您的示例,我建议您将所有内容放在一个 ViewModel 中。这实际上取决于情况或项目要求。

于 2013-05-30T23:09:14.343 回答