Есть ли способ использовать StaticResource в управляющей библиотеке WPF и иметь возможность просмотра во время разработки?

У меня есть библиотека управления WPF, которая добавляется в приложение Windows Forms. Мы хотим, чтобы элементы управления были локализуемыми, однако я не уверен, как ПОЛНОСТЬЮ выполнить это без дублирования кода.Это то, что я делаю сейчас.

По сути, в приложении Windows Forms перед запуском основного приложения я создаю экземпляр App.xaml, который находится в приложении форм (содержит мои ссылки на мои ресурсы, которые также находятся в приложении форм). Это отлично работает для времени выполнения.

Тем не менее, все мои пользовательские элементы управления имеютContent="{StaticResource SomeVariableName}", который в конечном итоге будет пустым. Я могу исправить это, имея app.xaml и соответствующие словари ресурсов в моей управляющей библиотеке, которые соответствуют тем, которые есть в моем приложении windows form. Однако это дублированный код.

Вещи, которые я уже пытался безрезультатно:

Instantiate the App.xaml that lives within the user control library from within my forms app. This does not work because the URIs to my resources is looking for an embedded resource, not my local resource dictionary (I could then simply copy the resource files from the control to an appropriate location within my forms app on build). Could I leverage DeferrableContent here? There is not much online as far as I could find on this attribute and how it should be used, though. I would like to use post builds for both App and dictionaries, however, the App instantiation is a static reference to a compiled App.xaml as far as I can tell. So, App.xaml must live within the form at least I did try to have a duplicated App.xaml with a post build moving the resourcedictionary.xaml. I figured that a duplicated app.xaml is ok since that is the driving force and you might not want to rely on one from the control anyway (which circles back and makes you wonder if you should then have the App.xaml in the control at all? Unless you want to allow a default that uses embedded resources....) That too failed saying it could not find the resource even though it was placed where the URI should have been pointing to. The decompiled code points to Uri resourceLocater = new Uri("/WindowsFormsApplication3;component/app.xaml", UriKind.Relative);

Итак, есть ли способ, чтобы это работало И имел представление времени разработки компонентов по умолчанию И избегал дублирования? Или в этом случае все в порядке? Если мой подпункт 2-го маркера выглядит нормально (дублированный файл App.xaml со скопированными сборками ресурсов), как мне сделать так, чтобы он не искал элемент уровня компонента, а вместо этого файл первого уровня?

Последний вопрос (и я могу опубликовать его отдельно, если необходимо), на который я только что обратил внимание. Мой App.xaml встраивается в код, так что в любом случае я не могу создавать новые ResourceDictionaries. Есть какой-либо способ сделать это?

Final option...possibly the best one? - В любом случае я планирую использовать код Андре ван ХеервардеИтак, я должен просто проверить наличие файла и добавить его как объединенный ресурс на лету? По сути, в моем пользовательском элементе управления есть один App.xaml, который ссылается на встроенный ResourceDictionary по умолчанию. И затем код должен искать соответствующие локализованные ресурсы на лету, которые могут быть относительными путями файлов? Единственный недостаток, который я вижу здесь, это то, что значение по умолчанию не может быть изменено на лету ... что я, возможно, даже мог бы иметь такой вид в указанном месте (используя какое-то соглашение) и предпочел бы этот вариант встроенному?

Да, и причина, по которой я не хочу встраивать ресурсы, заключается в том, что конечные пользователи могут добавлять / изменять новые локализованные ресурсы после развертывания сборки.

Я могу добавить код, если он поможет вам лучше это представить, просто дайте мне знать.

UPDATE

Сейчас я сталкиваюсь с еще одной проблемой со стилем, а не только с локализацией.

Вот пример одной из внутренних кнопок на одном из элементов управления:

<Button Style="{StaticResource GrayButton}"

Еще несколько вещей, которые я пробовал / думал:

I cannot create an app.xaml (that would never be used) with the ResourceDictionary set up as ApplicationDefinitions are not allowed in library projects. I could embed this in the control's resources, but then that would always take precedence over any application level resources and I lose customizability.

Вот случай подключения&nbsp;это на самом деле звучит как то, что я ищу, однако это не дает никакого реального решения этой проблемы.

Решение (за пределами вершины ... которое не работает), о котором я могу подумать, может сработать (и еще не попробовало), также кажется большой работой для чего-то, что, на мой взгляд, должно быть простым. Но я мог бы создать некоторые свойства зависимостей в элементе управления, к которым я могу привязаться, и затем разрешить их переопределение проектом, который будет использовать этот элемент управления. Как я уже сказал, для довольно простого запроса это кажется большой работой :). Будет ли это даже работать? И что еще более важно, есть ли лучшее, более простое решение, которое мне не хватает?