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 ..
强制回拨可以帮助我吗?
答案 0 :(得分:1)
我不确定正确性,但根据您的确切程序逻辑,这可能有效:
protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
{
if (IsInitialized)
{
DoWork(oldValue, newValue);
}
else
{
Initialized += (sender, e) => { DoWork(oldValue, newValue); };
}
}
答案 1 :(得分:0)
您可以通过在DependencyProperty的定义中提供默认值来执行此操作,也可以在类构造函数中设置默认值。
注册依赖项属性时,可以指定一个提供默认值的PropertyMetadata对象。
例如,查看DependencyProperty.Register方法。