UWP 中的自定义 MarkupExtension
Custom MarkupExtension in UWP
我想创建自己的 MarkupExtension
(例如 Binding
、TemplateBinding
...)
我如何才能像在 WPF 中那样为通用应用程序做到这一点?
我有一个悲伤,但没有。 UWP 目前 不支持自定义标记扩展。
在某些情况下,您可以通过使用绑定和转换器来解决这个问题。例如,要使用资源字符串(不使用 x:Uid
),我有一个实际上不需要值的转换器,只需要一个参数(资源 ID)。
例如,我可能绑定如下:
<TextBlock
Text="{x:Bind Language, Mode=OneWay, Converter={StaticResource Localize}, ConverterParameter=MyResourceId}"
/>
(此绑定不需要路径,但我还是绑定到 Language
,这允许即时切换语言。)
More about the LocalizeConverter
here.
但无论如何。如果我一直在做 WPF,这将是一个标记扩展。 Binding
本身当然是一个标记扩展,因此只要您能在其限制范围内工作,它就是一种可能的解决方法。
编辑
我只想强调 link Clemens 在他对 OP 的评论中给出的:
更新
There is now limited support for custom markup extensions! (向 Michael Hawker 的评论致敬。)
我想创建自己的 MarkupExtension
(例如 Binding
、TemplateBinding
...)
我如何才能像在 WPF 中那样为通用应用程序做到这一点?
我有一个悲伤,但没有。 UWP 目前 不支持自定义标记扩展。
在某些情况下,您可以通过使用绑定和转换器来解决这个问题。例如,要使用资源字符串(不使用 x:Uid
),我有一个实际上不需要值的转换器,只需要一个参数(资源 ID)。
例如,我可能绑定如下:
<TextBlock
Text="{x:Bind Language, Mode=OneWay, Converter={StaticResource Localize}, ConverterParameter=MyResourceId}"
/>
(此绑定不需要路径,但我还是绑定到 Language
,这允许即时切换语言。)
More about the LocalizeConverter
here.
但无论如何。如果我一直在做 WPF,这将是一个标记扩展。 Binding
本身当然是一个标记扩展,因此只要您能在其限制范围内工作,它就是一种可能的解决方法。
编辑
我只想强调 link Clemens 在他对 OP 的评论中给出的:
更新
There is now limited support for custom markup extensions! (向 Michael Hawker 的评论致敬。)