2014-11-06 2 views
1

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

я получить доступ к ресурсам, как это:

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

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

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

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

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

ответ

0

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

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

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

+0

[Именование пользовательского расширения Static предоставляет поддержку завершения редактирования редактора] (https://github.com/JohanLarsson/Gu.Localization). По крайней мере, это дураки R # :) –

Смежные вопросы