Создайте страницу действий или ресурс

У меня есть несколько ResourceDictionaries в моем приложении, чтобы сделать его локализуемым. Эти файлы называются пахнущими как Language_en.xaml, Language_nl.xaml и т.д. Ниже приведен пример такого файла.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:system="clr-namespace:System;assembly=mscorlib">

    <!-- DO NOT LOCALIZE -->
    <system:String x:Key="Language">English</system:String>
    <FlowDirection x:Key="FlowDirection">LeftToRight</FlowDirection>

    <!-- DO LOCALIZE -->
    <system:String x:Key="Title">English Title External</system:String>

</ResourceDictionary>

Чтобы загрузить эти файлы при запуске приложения, я создаю следующие пути:

_appResDicSource = Path.Combine("\\" + _projectName + ";component", _languagesDirectoryName,
            _fileBaseName + "_" + language + ".xaml");
_clsLibResDicSource = "\\MyDLL;component\\Languages\\Language_" + language + ".xaml";

Вышеописанное работает для обоих Resource сборки и Page с установкой CtOD на "Не копировать" и "Пользовательский инструмент" на "MSBuild: Compile".

Из этой ссылки я узнал цитату ниже, но что для меня лучше всего?

Ресурс (только wpf): вставляет файл в общий (по всем файлам в сборке с аналогичной настройкой) ресурс манифеста сборки с именем AppName.g.resources.

Страница (только для wpf): используется для компиляции файла xaml в baml. Затем baml внедряется в тот же метод, что и Resource (т.е. доступен как "AppName.g.resources")

+6
источник поделиться
1 ответ

Когда вы добавляете ResourceDictionary в Visual Studio (2017), Build Action: Page устанавливается по умолчанию, так что это означает, что предпочтительнее страница. Я нашел более подробную информацию по ссылке ниже:

https://docs.microsoft.com/en-us/dotnet/framework/wpf/app-development/wpf-application-resource-content-and-data-files

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос