Blech ... Команда WPF, похоже, оставляла желать лучшего с их решением по локализации. Ну, для чего это стоит, вот что я делал (честно говоря, я фактически позаимствовал эту идею у Jecho Jekov в CodeProject):
Во-первых, вам нужно создать (или заимствовать) класс Localization MarkupExtension. Jecho называет его LocExtension, я назвал свой i18nExtension ни по какой другой причине, кроме того, что мне показалось, что это было немного более наглядно, чем Loc. Это расширение разметки будет выполнять поиск указанного ключа ресурса в файле ресурсов. Это действительно простой и легкий класс для написания кода, если вы хотите, чтобы все ваши ресурсы находились в файле Properties / Resources.resx.
В результате вы получите что-то вроде этого в xaml:
<UserControl ... >
...
<TextBox Text="{i18n HelloWorld}"/>
...
</UserControl>
Если вы хотите иметь отдельные файлы resx для каждого элемента UserControl / Window, как позволяет конструктор WinForms, вам нужно проявить немного креативности в MarkupExtension, чтобы он мог выяснить свой контекст.
В конечном счете, вы получаете одну сборку сателлитов на культуру, а это то, что вам кажется. Единственное предостережение, которое приходит на ум, заключается в том, что я не уверен, как это происходит с изменениями культуры / языка на лету. По крайней мере, окно / элемент управления необходимо перезагрузить.