UWP中的自定义MarkupExtension

时间:2016-12-20 15:02:16

标签: c# .net xaml uwp markup-extensions

我想创建自己的MarkupExtension(例如BindingTemplateBinding ...)

如何像在WPF中那样为Universal Apps执行此操作?

1 个答案:

答案 0 :(得分:5)

我很难过,但没有。 UWP目前 不支持自定义标记扩展。

在某些情况下,您可以使用绑定和转换器解决此问题。例如,要使用资源字符串(不使用x:Uid),我有一个实际上不需要值的转换器,只有一个参数(资源ID)。

例如,我可能会绑定如下:

<TextBlock
    Text="{x:Bind Language, Mode=OneWay, Converter={StaticResource Localize}, ConverterParameter=MyResourceId}"
/>

(此绑定不需要路径,但无论如何我都绑定到Language,这允许动态切换语言。)

More about the LocalizeConverter here

但无论如何。如果我一直在做WPF,这将是一个标记扩展。当然,Binding本身就是一个标记扩展,所以只要你能在其约束下工作,它就是一种可能的解决方法。

修改

我只想强调克莱门斯在对OP的评论中给出的链接:

https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/7232264-add-markup-extensions-to-and-improve-winrt-xaml

<强>更新

There is now limited support for custom markup extensions! (给迈克尔霍克的评论提示。)