附属财产问题

发布于 2024-09-11 14:47:08 字数 246 浏览 7 评论 0原文

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

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

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

谢谢。

I have a attached property which name is "Translate". I set the property like this:

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

I get the Target value in the property changed event handler and it is null. But I set it in the XAML. Why is it null?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

贵在坚持 2024-09-18 14:47:08

绑定直到加载 UI 过程的后期才会发生,因此在应用本地值“true”时,绑定尚未被评估。您需要推迟对目标值的检查,直到更新绑定之后。这应该可以让您开始使用 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
        });
    }

Binding doesn't occur until later in the process of loading the UI so at the point that your local value of "true" is being applied the Binding has yet to be evaluated. You need to postpone the check of the Target value until after the Binding has been updated. This should get you started in the Translate PropertyChanged handler:

    Label label = dObj as Label;
    if (BindingOperations.IsDataBound(label, Label.TargetProperty))
    {
        Binding.AddTargetUpdatedHandler(label, (sender, args) =>
        {
            UIElement element = label.Target;
            // do something with element
        });
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文