Wpf 命令由所有实例接收,而不是由单个MVVM工具包接收
我已经创建了一个名为PhotoView的视图,它绑定到一个PhotoviewModel。 在视图模型中,我定义了如下命令:Wpf 命令由所有实例接收,而不是由单个MVVM工具包接收,wpf,mvvm-light,mvvm-toolkit,Wpf,Mvvm Light,Mvvm Toolkit,我已经创建了一个名为PhotoView的视图,它绑定到一个PhotoviewModel。 在视图模型中,我定义了如下命令: //Show info command ShowInfoCmd = new RelayCommand<RoutedEventArgs>( (e) => { if (IsInfoOpen) { Messenger.Default.
//Show info command
ShowInfoCmd = new RelayCommand<RoutedEventArgs>(
(e) =>
{
if (IsInfoOpen)
{
Messenger.Default.Send(new Knauf.Message.HidePhotoInfo(this));
IsInfoOpen = !IsInfoOpen;
}
else
{
Messenger.Default.Send(new Knauf.Message.ShowPhotoInfo(this));
IsInfoOpen = !IsInfoOpen;
}
},
(e) => HasMoreInfo
);
//Show info命令
ShowInfoCmd=新的RelayCommand(
(e) =>
{
如果(ISInfo打开)
{
Send(new Knauf.Message.HidePhotoInfo(this));
IsInfo开放=!IsInfo开放;
}
其他的
{
senger.Default.Send(new Knauf.Message.ShowPhotoInfo(this));
IsInfo开放=!IsInfo开放;
}
},
(e) =>HasMoreInfo
);
我发送的消息类型是自定义消息
对于每一张照片,我都会创建一个新的PhotoViewModel,然后创建一个PhotoView实例。因此,每个PhotoView都有一个按钮绑定到PhotoViewModel中的ShowInfoCmd
实际发生的情况是,如果我单击PhotoView的一个实例上的按钮,则只有该实例才会收到该命令
实际上,所有实例都接收该命令。
我怎样才能避免这种情况
求助
当做
serge解决,它是在错误的实例上提出的您是否验证了所有实例都得到了对该命令的调用?或者可能是接收到
Knauf.Message.HidePhotoInfo
消息的类不知道它来自哪个ViewModel?解决了,它是在错误的实例上提出的