【问题标题】:How to read a Dependency property from a method如何从方法中读取依赖属性
【发布时间】:2010-04-22 13:34:16
【问题描述】:

XAML:

<my:Control ItemsSource="{StaticResource MySource}"  A="true" />

假设一个具有依赖属性A的控件具有默认值false; 以及处理源集合的方法:

protected override void OnItemsSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue) {}

你想查看A读出它的值(这是真的)。 您如何确保 A 已经初始化并具有给定值?

或者这应该如何正确完成?

在我的情况下,A 类似于 AllowLateBinding ..

强制回调可以帮助我吗?

【问题讨论】:

    标签: .net wpf methods dependency-properties


    【解决方案1】:

    我不确定正确性,但取决于您的确切程序逻辑,这可能有效:

    protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
    {
      if (IsInitialized)
      {
         DoWork(oldValue, newValue);
      }
      else
      {
        Initialized += (sender, e) => { DoWork(oldValue, newValue); };
      }
    }
    

    【讨论】:

      【解决方案2】:

      您可以通过在 DependencyProperty 的定义中提供默认值或在类构造函数中设置默认值来做到这一点。

      当您注册一个依赖属性时,您可以指定一个 PropertyMetadata 对象,该对象提供默认值。

      DependencyProperty.Register 方法为例。

      【讨论】:

      • 我想我们误会了,因为我有一个 A 的默认值,它是假的。现在,如果有人使用控件并设置 A="true",我必须能够在将项目加载到控件之前读取 true(在重写的 ItemsSource Changed 方法中说)
      猜你喜欢
      • 2017-05-24
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多