我的UI中有两个不同的用户控件。这些控件是UI层次结构中的兄弟。是否可以从一个用户控件中触发命令,然后在另一个用户控件上处理它?
换句话说,是否可以从其他用户控件(例如UserControlAViewModel)的以下ViewModel中使用ICommand属性?
class UserControlBViewModel : ViewModelBase
{
public ICommand Command
{
get
{
if (_Command == null)
{
_Command = new RelayCommand(param => this.CommandExecute(), param => this.CommandCanExecute);
}
return _Command ;
}
}
}
最佳答案
这是你的情况吗?您有一个带有两个控件(ChildViewA和ChildViewB)的父 View 。他们每个人都有自己的VM:
ParentView-ParentVM
ChildViewA-ChildAVM
ChildViewB-ChildBVM
ChildViewA执行使用RelayCommand在ChildAVM内部处理的命令。 ChildAVM通知ParentVM已执行命令。 ParentVM通知ChildBVM该命令已执行。
VM之间的通信方式取决于您需要/希望它们之间的连接程度。
一种简单的实现方法是让子VM实现INotifyPropertyChanged。然后,ParentVM可以订阅PropertyChanged事件。该命令将导致ChildAVM上的某些属性发生更改,这将由ParentVM注意到。接下来,parentVM将在ChildBVM上设置一些属性。
关于wpf - 不同用户控件中的WPF命令处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5249310/