Пользовательские 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 само по себе, разумеется, является расширением разметки, поэтому, пока вы можете работать в пределах его ограничений, это возможный обходной путь.

РЕДАКТИРОВАТЬ

Я просто хочу выделить ссылку, которую Клеменс дал в своем комментарии к ФП:

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

ОБНОВИТЬ

В настоящее время ограничена поддержка пользовательских расширений разметки! (Шляпная подсказка к комментарию Майкла Хокера.)

Другие вопросы по тегам