У меня есть приложение, настроенное так, что я могу настроить его скин во время выполнения.Каждый раз, когда я меняю скин, я делаю это следующим образом:
Uri uri = new Uri("SomeThemeAssembly;component/Themes/StandardTheme.xaml", UriKind.Relative)
Application.Current.Resources.MergedDictionaries.Clear();
ResourceDictionary resource = (ResourceDictionary)Application.LoadComponent(uri);
Application.Current.Resources.MergedDictionaries.Add(resource);
Это прекрасно работает.
Я также создал собственный элемент управления с его шаблоном control, определенным в Themes / Generic.xaml, используяComponentResourceKeys для соответствующих ресурсов и т. Д.
x:Key="{ComponentResourceKey
TypeInTargetAssembly={x:Type local:MyCustomControl},
ResourceId=MyBrush}"
Стиль самого пользовательского элемента управления не использует ключ componentresource, поскольку я хочу, чтобы он стилизовал все экземпляры.
<Style TargetType="{x:Type local:MyCustomControl}">
Опять же, все это работает нормальнои стандартные элементы управления, которые я использовал для создания элементов моего пользовательского элемента управления, соответствующим образом оформляются при смене обложки.
Однако в моем элементе управления есть ряд пользовательских свойств (кисти, ширины и т. д.), которые необходимостиль, чтобы соответствовать скинам, которые я применяю.
В примерах, которые я видел, используя стандартные темы Windows, добавляю дополнительный файл
Luna.StandardColor.Xaml
, например, в каталог тем пользователяЭлемент управления позволяет установить и выбрать измененный шаблон элемента управления при применении этой конкретной темы.В любом случае, насколько я могу судить, это не сработает, поскольку мои скины не являются темами.
Может ли быть достигнуто нечто подобное при использовании скинов таким же образом, как у меня?
Очевидно, что я могу добавить Styles и ControlTemplates в свои сборки скинов, но это неправильно, особенно если для ресурсов скинов существует стандартное соглашение о присвоении имен.Поэтому для сохранения в Themes / StandardTheme.xaml в сборке моего пользовательского элемента управления потребуется только один более поддерживаемый стиль.
После попытки прочтения этой темы у меня сложилось впечатление, что я хочу сделатьЭто либо невозможно, либо потребует дополнительной работы на ногах.
Любые мысли приветствуются.