2010-07-22 90 views
0

我有一个名为“翻译”的附加属性。我设置这样的属性:附加属性问题

<Label Target="{Binding ElementName=UserName}" 
     Content="User Name" 
     Extensions.Translate="true"/> 

我在属性更改的事件处理程序中获得目标值,它为空。但我将其设置在XAML中。为什么它是空的?

谢谢。

回答

1

绑定不会发生在加载UI的过程中,因此在您的本地值为“true”的情况下,绑定尚未进行评估。您需要推迟对目标值的检查,直到绑定更新完毕。这应该让你开始在翻译PropertyChanged处理程序:

Label label = dObj as Label; 
    if (BindingOperations.IsDataBound(label, Label.TargetProperty)) 
    { 
     Binding.AddTargetUpdatedHandler(label, (sender, args) => 
     { 
      UIElement element = label.Target; 
      // do something with element 
     }); 
    } 
+0

非常好的答案,谢谢。 – frameworkninja 2010-08-02 07:26:05