WPF/Silverlight中的标记扩展

Cha*_*ham 7 silverlight wpf markup-extensions

有没有人曾在WPF或Silverlight中创建自定义标记扩展?你什么时候想要或者需要这样做?关于如何做的任何提示或来源?

小智 9

一个例子是本地化:

本地化应用程序资源的一种简单有效的方法是编写提供本地化值的自定义MarkupExtension .扩展采用一个唯一的资源键参数... [然后]从通用资源提供程序中查找值.

注意:您无法在silverlight中编写自定义标记扩展.


Phi*_*ght 4

是的,它很方便,我自己也创建了一个。我创建了一个名为EvalBinding的标记扩展,它采用一组绑定作为子项和一个 C# 评估字符串。它评估 C# 来处理子绑定中的值,因此我不需要创建许多简单的TypeConverter类。

例如我可以这样做...

<EvalBinding Eval="(this[0] > this[1] ? 'GT' : 'LTE')">
    <Binding ElementName="element1" Path="Size"/>
    <Binding ElementName="element2" Path="Size"/>
<EvalBinding>
Run Code Online (Sandbox Code Playgroud)

是对子绑定结果数组的引用。

有关实现 MarkupExtension 的资源...

微软软件定义网络

约什·史密斯博客条目

Rob Relyea 博客条目