Псевдоним статическому классу в XAML

1

Для локализации у меня есть один файл resx для файла XAML. Они лежат в одном каталоге и пространстве имен. Имя resx соответствует имени XAML со словом "Ресурсы".

Я обращаюсь к следующим ресурсам:

<TextBlock Text="{x:Static r:MainWindowResources.SomeText}"/>

Поскольку я нахожу это довольно длинным (и есть еще более длинные имена классов), мне было интересно, есть ли способ определить псевдоним MainWindowResources. В С# я могу сделать это с помощью директивы using.

Было бы намного проще, если бы сгенерированная оболочка файла ресурсов не была классом со статическими свойствами. Возможным решением может быть использование экземпляра оболочки, который наследуется от DynamicObject. Вы можете передать ему тип и получить доступ к ним через статические элементы. Затем вы добавите экземпляр этой обертки в качестве ресурса в XAML.

Но я потерял бы поддержку IntelliSense, и, вероятно, это было бы не очень удобно.

Другим решением будет использование расширения локализации WPF, но я также потеряю поддержку IntelliSense. Плюс, я любопытно, есть ли другой способ создания псевдонима для статического класса. :)

Теги:
xaml
wpf
localization

1 ответ

0
Лучший ответ

Нет, нет простого псевдонима имени класса в Xaml, как в С# с using.

Настроенное расширение разметки с коротким именем, вероятно, лучшее, что вы могли бы сделать, но, как вы говорите, вы потеряете поддержку завершения редактирования. Если вы действительно в отчаянии, вы можете написать шаблон T4, который будет генерировать перечисление с одним значением для каждой строки в файле ресурсов, а затем вы можете использовать значение перечисления в качестве параметра расширения разметки с поддержкой завершения (например, {l:MainWindowString SomeText}), но это похоже на большую работу, чтобы сократить некоторые атрибуты Xaml, и они не были бы намного короче.

Я бы просто придерживался того, что у вас есть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню