有没有办法控制依赖属性绑定顺序值更新?

时间:2014-03-03 15:41:33

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

有没有办法操纵顺序,其中依赖属性接收其值:

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将在绑定之前得到更新。

1 个答案:

答案 0 :(得分:1)

我不知道有什么直接的方法可以做到这一点。而我个人从未有过这样做的愿望。当您仅使用OnXYZChanged方法注册事件(这是最常见的情况)时,您可以注册到更适合您所需代码执行顺序的事件。例如,在OnXYZChanged注册到Loaded事件并处理该事件时,这些事件的顺序应该是从Root到子的,因此顺序正确。

另一种方法是测试哪一个被称为第二个,并在那里做你的逻辑。 另一个想法是使用Dispatcher并在稍后确定所有内容都已加载时执行所有逻辑。

最后一个想法,您可以使用VisualTreeHelper中的OnXYZChanged遍历{{1}}中的子元素到基础窗口,然后首先在窗口上设置属性,然后处理子项的逻辑。

@Your edit:

如果你考虑一下,这是有道理的。必须创建可视树,并且必须先绑定所有内容,然后Binding才能遍历树以查找适当的DataContext。