目前我的项目中有2个ViewModel。 MainViewModel当前绑定到我的WPF窗口,所以我在其他ViewModel(AdventurerViewModel)中有一个命令,不再触发。有没有办法在没有绑定ViewModel的情况下触发该命令,或者我的所有命令都需要在MainViewModel中?是否有一种很好的方法可以组织命令,可以帮助我避免将来出现这种情况?任何建议都将不胜感激。
编辑:一些代码
来自我的XAML
Button 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++;
}
答案 0 :(得分:1)
首先确保正确拆分ViewModel并将命令放在正确的ViewModel中。
之后,您可能仍希望在当前ViewModel中通知其他ViewModel更改。在这种情况下,您可以查看ViewModel之间的消息传递系统,以便ViewModel可以订阅特定事件并对其进行响应。
答案 1 :(得分:0)
每个视图使用一个ViewModel。如果您使用Window,那么您应该使用一个ViewModel。现在在我的项目中有一个Window,其中有2个用户控件,每个UserControl都有自己的ViewModel和Window的ViewModel。我可以将所有内容放在一个ViewModel中,但这样更干净,但对于您的示例,我建议您将所有内容放在一个ViewModel中。它实际上取决于情况或项目要求。