代码之家  ›  专栏  ›  技术社区  ›  naacal

依附性属性在被破坏后保持其价值

  •  1
  • naacal  · 技术社区  · 14 年前

    public static readonly DependencyProperty ThatDependencyPropertyProperty =
            DependencyProperty.Register("ThatDependencyProperty", typeof(ObservableCollection<SomeClass>)
                , typeof(MainWindow), new UIPropertyMetadata(new ObservableCollection<SomeClass>()));
    

    问题: 在通过设置DialogResult关闭此对话框并完全重新实例化后,此DependecProperty仍获得其值,并且对话框仍显示以前的主/详细信息。我目前的解决方法是简单地让对话框清除它的ctor中的集合,但我肯定不喜欢这样。。。通过两个实例化,什么可以使这个集合保持活动?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Josh    14 年前

    啊,你不应该通过 new ObservableCollection

    相反,应该将dependency属性的默认值保留为 null 然后在实例构造函数中,将其设置为 新可观测集合

    public static readonly DependencyProperty ThatDependencyPropertyProperty =
        DependencyProperty.Register("ThatDependencyProperty", typeof(ObservableCollection<SomeClass>)
            , typeof(MainWindow), new UIPropertyMetadata(null));
    
    public MainWindow() {
        this.ThatDependencyProperty = new ObservableCollection<SomeClass>();
    }