【问题标题】:At what stage in a control's lifetime can it access inherited attached properties?在控件生命周期的哪个阶段,它可以访问继承的附加属性?
【发布时间】:2012-07-17 06:56:19
【问题描述】:

我有一个使用某个继承的附加属性的控件,我发现我无法在构造函数中访问该属性,这是合理的,因为在那个阶段该控件不是可视化树的一部分,并且所以它不能继承任何附加的属性。

// Constructor
public MyClassName()
{
    InitializeComponent();

    MyValue value = DeclaringClass.GetMyAttachedProperty(depObj); // value == null
}

当我尝试在Loaded 事件期间访问该属性时,我能够检索到该值:

// Constructor
public MyClassName()
{
    InitializeComponent();

    Loaded += OnLoaded;
}

void OnLoaded(object sender, RoutedEventArgs e)
{
    Loaded -= OnLoaded;

    MyValue value = DeclaringClass.GetMyAttachedProperty(depObj); // value != null

    // Do something with value
}

所以这让我想到了我的问题 - 控件生命周期中可以访问继承的附加属性的最早阶段是什么?在Loaded 事件中,有没有更好的地方可以这样做?

【问题讨论】:

    标签: c# wpf dependency-properties attached-properties object-lifetime


    【解决方案1】:

    最早的可能确实在Loaded 事件处理程序中。您唯一的其他选择是构造函数(或道德上等效的 Initialized 事件),但对于依赖属性来说,假设继承值还为时过早。

    另请参阅 MSDN 上的 common object lifetime events

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      相关资源
      最近更新 更多