Пользовательские MarkupExtension в UWP
Я хотел бы создать свой собственный MarkupExtension
(лайк Binding
, TemplateBinding
...)
Как я могу сделать это для универсальных приложений, как я это делал в WPF?
1 ответ
У меня грустный, но нет. UWP в настоящее время не поддерживает пользовательские расширения разметки.
В некоторых случаях вы можете обойти это, используя привязки и конвертеры. Например, чтобы использовать строку ресурса (не используя x:Uid
), У меня есть конвертер, который на самом деле не нуждается в значении, только параметр (идентификатор ресурса).
Например, я мог бы связать следующим образом:
<TextBlock
Text="{x:Bind Language, Mode=OneWay, Converter={StaticResource Localize}, ConverterParameter=MyResourceId}"
/>
(Эта привязка не нуждается в пути, но я связываюсь с Language
во всяком случае, что позволяет переключать языки на лету.)
Подробнее о LocalizeConverter
здесь
Но в любом случае. Если бы я делал WPF, это было бы расширение разметки. Binding
само по себе, разумеется, является расширением разметки, поэтому, пока вы можете работать в пределах его ограничений, это возможный обходной путь.
РЕДАКТИРОВАТЬ
Я просто хочу выделить ссылку, которую Клеменс дал в своем комментарии к ФП:
ОБНОВИТЬ
В настоящее время ограничена поддержка пользовательских расширений разметки! (Шляпная подсказка к комментарию Майкла Хокера.)