1

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

// 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活动?

4

1 回答 1

1

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

另请参阅MSDN 上的常见对象生命周期事件

于 2012-07-17T07:48:49.093 回答