如何在mvvm wpf模型中处理关闭中继命令

如何在mvvm wpf模型中处理关闭中继命令,wpf,mvvm,memory-leaks,command,Wpf,Mvvm,Memory Leaks,Command,我有这个应用程序使用MVVM wpf模型和John Smith的中继命令类。它有两个主要问题: 1) 即使在处理视图模型并将命令设置为null之后,它们仍然会在之后被激发 2) 视图模型虽然已处理完毕,但似乎仍在内存中。它在顶部使用选项卡控件,即使关闭选项卡,内存也不会被清理。这与视图模型相关,因为一旦视图模型的属性设置为null,下次打开其他选项卡时,视图模型将尝试访问已释放的属性。仅供参考,这里没有单身人士 它使用的是中继命令类,问题最终在于,即使目标对象未引发命令,仍会触发命令,即未单击命

我有这个应用程序使用MVVM wpf模型和John Smith的中继命令类。它有两个主要问题:

1) 即使在处理视图模型并将命令设置为null之后,它们仍然会在之后被激发

2) 视图模型虽然已处理完毕,但似乎仍在内存中。它在顶部使用选项卡控件,即使关闭选项卡,内存也不会被清理。这与视图模型相关,因为一旦视图模型的属性设置为null,下次打开其他选项卡时,视图模型将尝试访问已释放的属性。仅供参考,这里没有单身人士

它使用的是中继命令类,问题最终在于,即使目标对象未引发命令,仍会触发命令,即未单击命令链接到的按钮,但在关闭其子窗口时仍会触发该按钮

任何帮助都将不胜感激


谢谢

在将命令属性设置为null后,引发命令属性的PropertyChanged事件

public class ViewModel : INotifyPropertyChanged, IDisposable
{
   public event PropertyChangedEventHandler PropertyChanged;
   public void Dispose()
   {
      Command = null;
   }

   public RelayCommand Command
   {
      get{return m_command;}
      set
      {
         if(m_command == value)
            return;
         m_command = value;
         if (PropertyChanged != null)
            PropertyChanged (this, new PropertyChangedEventArgs ("Command");
      }
   }
}

将命令属性设置为null后,引发命令属性的PropertyChanged事件

public class ViewModel : INotifyPropertyChanged, IDisposable
{
   public event PropertyChangedEventHandler PropertyChanged;
   public void Dispose()
   {
      Command = null;
   }

   public RelayCommand Command
   {
      get{return m_command;}
      set
      {
         if(m_command == value)
            return;
         m_command = value;
         if (PropertyChanged != null)
            PropertyChanged (this, new PropertyChangedEventArgs ("Command");
      }
   }
}
“将命令设置为空”是什么意思?ViewModel上的命令属性设置为null?将命令设置为null是什么意思?ViewModel上的命令属性是否设置为null?