Я знаю все о старой школе: используйте файл ресурсов с расширением .resx, укажите атрибут NeutralResourcesLanguage, нейтральный ресурс компилируется в сборке, и вы можете компилировать вспомогательные сборки из других локализованных ресурсов (blahblah.de-DE.resx). Visual Studio также генерирует строго типизированный .cs из ресурсов, поэтому его легко использовать из кода (Properties.Resources.Default.WhateverStringResource).
Я только что изучил новый способ WPF: поместить ресурсы в файл .xaml, использовать тег UICulture в .csproj, чтобы поместить ресурс .baml во вспомогательную сборку или нет, и поместить ресурс .baml в основную сборку. Эти ресурсы легко использовать внутри .xaml, но, AFAIK, а не из кода, так как файл .cs не создается автоматически.
Так что, возможно, я очень ошибаюсь, но у меня есть несколько вопросов. "Серьезно, что, черт возьми, теперь?" быть первым. Чтобы мои рассуждения были обоснованными, просто создайте новое приложение WPF в Visual Studio 2010: вы получите. xaml, и он также поместит туда пустой Properties \ Resources.resx. Вот и все, так что они должны сосуществовать.
Прежде всего, нужны ли мне и новая, и старая школа? Я не вижу простого способа использовать строго типизированные ресурсы .xaml из кода программной части. Почему бы нет? Может быть, есть способ сгенерировать их в файлы .cs, а я просто не знаю об этом.
Теперь большая проблема в том, что я тоже не могу использовать ресурсы .resx из .xaml. ПОЧЕМУ?! Дизайнер Visual Studio 2010 наверняка их не видит, но опять же, это может быть плохо.
MSDN предлагает использовать тег UICulture. Он помещает ресурс .baml во вспомогательную сборку, так что сборка даже не содержит нейтральной. Но это не работает для нейтрального ресурса старой школы, AFAIK, нелокализованный .resx должен войти в основную сборку. Поэтому, если я хочу использовать новую и старую школу в одном проекте, я не могу использовать тег UICulture, мне нужны все нейтральные ресурсы в основной сборке. Я единственный, кого это беспокоит?
Итак, вопросы: