2012-05-03 112 views
1

我有基于WPF开发的Windows应用程序,我在这里会遇到奇怪的问题。 我必须选择图像,一旦它弹出像“”关键帧图像被调整大小成功“的消息,但如果做两次,它弹出两次,但如果做3次,然后它弹出三次消息框弹出两次 - WPF

我不知道如何解决这个或如何计算,任何帮助非常apprciated。

这里是我的视图模型类文件

private void imageResizer_ResizeCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) 
    { 
     string test =e.ToString(); 
     ImageResizerResult result = (ImageResizerResult)e.Result; 

     this.aggregator.GetEvent<ImageResizeCompletedEvent>().Publish(result.IsSuccessful); 

      if (result.IsSuccessful) 
      { 

       this.dialog.ShowSuccess("Keyframe Image was resized successfully"); 
      } 

     } 

呼吁我的服务传递此消息

 public void ShowSuccess(string message) 
    { 

     MessageBox.Show(message, 
         "Success", 
         MessageBoxButton.OK, 
         MessageBoxImage.Information); 
    } 

任何想法在这里失踪。感谢提前

+0

你在哪里为你的事件监听器配置imageResizer_ResizeCompleted?这根导线有可能不止一次发射? –

回答

2

我认为,每次你选择一个图像,你添加一个事件到该图像(或图像的控制器)与+ =操作符。然后,在应用程序的某个地方,会触发ResizeComplete事件。

但是,由于您从未将事件与以前的图像分开,因此所有这些事件都会一起被解雇。您需要在代码中的某处使用 - =运算符,可能在ResizeComplete方法中。

+0

@杰米,你真棒,我只是在this.dialog.ShowSuccess(“关键帧图像已成功调整大小”)添加此代码; imageResizer.ResizeCompleted - = new ImageResizerService.ResizeCompletedHandler(imageResizer_ResizeCompleted); – Usher