Как избавиться от команды реле в модели mvvm wpf - PullRequest
0 голосов
/ 14 июля 2011

У меня есть это приложение, использующее модель MVVM wpf вместе с классом команд реле Джона Смита.С ним связаны две основные проблемы:

1) Даже после удаления модели вида и установки команд в значение null, они все равно запускаются впоследствии.

2) Хотя модель вида отключена,кажется, все еще в памяти.Он использует управление вкладками сверху, и память никогда не очищается даже после закрытия вкладок.Это связано с моделью представления, поскольку, если для свойств модели представления установлено значение NULL, при следующем открытии другой вкладки модель представления пытается получить доступ к удаленному свойству.К вашему сведению, здесь не задействовано ни одного синглета.

Он использует класс команд реле, и проблема в конечном итоге здесь, когда команды запускаются, даже если целевой объект не вызывал его, т. Е. Кнопка, с которой связана командане нажимается, но все равно запускается при закрытии дочернего окна.

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

1 голос
/ 14 июля 2011

Вызовите событие PropertyChanged для свойств команды после того, как для них задано значение NULL.

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");
      }
   }
}
...