我有一个名为“翻译”的附加属性。我这样设置属性:
<Label Target="{Binding ElementName=UserName}"
Content="User Name"
Extensions.Translate="true"/>
我在属性更改事件处理程序中获得目标值,它为空。但我将它设置在 XAML 中。为什么它是空的?
谢谢。
我有一个名为“翻译”的附加属性。我这样设置属性:
<Label Target="{Binding ElementName=UserName}"
Content="User Name"
Extensions.Translate="true"/>
我在属性更改事件处理程序中获得目标值,它为空。但我将它设置在 XAML 中。为什么它是空的?
谢谢。
直到在加载 UI 过程的后期才会发生绑定,因此在应用您的本地值“true”时,尚未评估绑定。您需要将 Target 值的检查推迟到 Binding 更新之后。这应该让您开始使用 Translate 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
});
}