以编程方式设置 WPF 属性

发布于 2024-11-07 23:38:02 字数 373 浏览 0 评论 0原文

我有一个 TextBlock 控件,并且以声明方式将 Text 属性设置为 {loc:Translate}

<TextBlock x:Name="Message" Text="{loc:Translate}" loc:TranslateExtension.Uid="myMessage"  />

在运行时,我将 Text 属性值更新为其他值。然后我需要将其重置回 {loc:Translate}

我的问题是,如何以编程方式将 Text 设置为 {loc:Translate}

I have a TextBlock control and I am declaratively setting the Text property to {loc:Translate}.

<TextBlock x:Name="Message" Text="{loc:Translate}" loc:TranslateExtension.Uid="myMessage"  />

During runtime, I update the Text property value to something else. I then need to reset it back to {loc:Translate}.

My question is, how can I programmatically set Text to {loc:Translate}?

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

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

发布评论

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

评论(1

山有枢 2024-11-14 23:38:02

当 XAML 处理器处理作为标记扩展的类型节点和成员值时,它会调用该标记扩展的 ProvideValue 方法并将结果写入对象图或序列化流中。 XAML 对象编写器通过 serviceProvider 参数将服务上下文传递给每个此类实现。

tb.Text = new TranslateExtension().ProvideValue(null) as string;

应该是这样,只是缺少“正确的”IServiceProvider 参数。

在典型用法中,.NET Framework XAML 服务和实现的 XAML 对象编写器将为它在 XAML 处理期间调用的所有值转换器方法提供服务提供程序。但是,为了稳健性,您应该为服务提供者本身和任何请求的服务提供空值的代码路径。如果在 XAML 解析器基础结构提供的典型服务支持不可用的某些情况下应用标记扩展,则可能会出现空值。

因此,根据您的扩​​展实现,您实际上可以将 null 传递给 ProvideValue

When a XAML processor processes a type node and member value that is a markup extension, it invokes the ProvideValue method of that markup extension and writes the result into the object graph or serialization stream. The XAML object writer passes service context to each such implementation through the serviceProvider parameter.

tb.Text = new TranslateExtension().ProvideValue(null) as string;

This should be it except that this is lacking a 'proper' IServiceProvider-parameter.

In typical usage, the .NET Framework XAML Services and the implemented XAML object writers will provide a service provider to all value converter methods it invokes during XAML processing. However, for robustness, you should provide code paths for null values both for the service provider itself and for any requested service. Null values might occur if your markup extension is applied in some circumstance where the typical service support provided by a XAML parser infrastructure is not available.

So depending on your extension implementation you could actually pass null to ProvideValue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文