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

时间:2012-08-17 10:39:09

标签: wpf mvvm-light mvvm-toolkit

我创建了一个View调用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
        );

我发送的消息类型是自定义消息。

对于每张照片,我创建一个新的PhotoViewModel,然后创建一个PhotoView实例。因此,每个PhotoView都有一个按钮绑定到PhotoViewModel中的ShowInfoCmd。

实际发生的情况是,如果我单击一个PhotoView实例上的按钮,那么该实例应该会收到命令。

实际上所有实例都会收到命令。 我怎么能避免这个?

寻求帮助 问候 哔叽

1 个答案:

答案 0 :(得分:0)

解决,它是在错误的实例上引发的