有没有办法操纵顺序,其中依赖属性接收其值:
XAML:
<Window local:MyHelper.SomeAttachedProp="{Binding Something , Mode=OneWay}">
<Grid>
<TextBlock Text="Let him go first"
local:MyHelper.AnotherAttachedBooleanProp="True" />
</Grid>
</Window>
CS:
public static class MyHelper
{
propa ....
OnSomeAttachedPropChanged( .... )
{
// I WANT TO GET HERE FIRST
}
propa .....
OnAnotherAttachedBooleanPropChanged( .... )
{
// I WANT TO GET HERE SECOND
}
}
目前我在OnSomeAttachedPropChanged之前到达AnotherAttachedBooleanPropChanged 有没有办法控制顺序更新依赖属性?
修改:
我记得/意识到了什么,直接分配的DP将在绑定之前得到更新。
答案 0 :(得分:1)
我不知道有什么直接的方法可以做到这一点。而我个人从未有过这样做的愿望。当您仅使用OnXYZChanged
方法注册事件(这是最常见的情况)时,您可以注册到更适合您所需代码执行顺序的事件。例如,在OnXYZChanged
注册到Loaded
事件并处理该事件时,这些事件的顺序应该是从Root到子的,因此顺序正确。
另一种方法是测试哪一个被称为第二个,并在那里做你的逻辑。
另一个想法是使用Dispatcher
并在稍后确定所有内容都已加载时执行所有逻辑。
最后一个想法,您可以使用VisualTreeHelper
中的OnXYZChanged
遍历{{1}}中的子元素到基础窗口,然后首先在窗口上设置属性,然后处理子项的逻辑。
@Your edit:
如果你考虑一下,这是有道理的。必须创建可视树,并且必须先绑定所有内容,然后Binding才能遍历树以查找适当的DataContext。