我有这个应用程序使用MVVM wpf模型以及John Smith的relay命令类。它有两个主要问题:
1)即使在处理视图模型并将命令设置为null之后,它们仍会在之后被触发。
2)视图模型虽然处理掉了,但似乎仍然在内存中。它在顶部使用选项卡控件,即使关闭选项卡后内存也永远不会被清除。这与视图模型有关,因为一旦视图模型的属性设置为null,下次打开另一个选项卡时,视图模型将尝试访问已关闭的属性。仅供参考,此处不涉及单身人士。
它正在使用relay命令类,并且问题最终就在这里,即使目标对象没有引发它也会触发命令,即没有点击命令链接到的按钮但是当它关闭时它仍会触发它儿童之窗。
非常感谢任何帮助。
由于
答案 0 :(得分:1)
将命令属性设置为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");
}
}
}