Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 命令由所有实例接收,而不是由单个MVVM工具包接收_Wpf_Mvvm Light_Mvvm Toolkit - Fatal编程技术网

Wpf 命令由所有实例接收,而不是由单个MVVM工具包接收

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.

我已经创建了一个名为PhotoView的视图,它绑定到一个PhotoviewModel。 在视图模型中,我定义了如下命令:

 //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?解决了,它是在错误的实例上提出的