Вы вообще не должны ссылаться на generic.xaml
, он имеет встроенную поддержку. Однако это означает, что он предоставляет стиль по умолчанию, который вы не задаете явно. Явно установленные стили / шаблоны должны быть достижимы из словарей с явно указанными ссылками.
(РЕДАКТИРОВАТЬ для ясности)
Единственным исключением является App.xaml
, где определенные ресурсы становятся доступными всему приложению, не требуя ссылки на какой-либо конкретный словарь ресурсов. Сам ресурс должен быть доступен по имени.
Причина, по которой это не удается
<Application.Resources>
<ResourceDictionary
Source="/CommonLibraryWpfThemes;component/Themes/Generic.xaml" />
</Application.Resources>
Я думаю, что
потому что вы не завернули его в оболочку MergedDictionary
, добавив его в объединенные словари. Добавление непосредственно к ресурсам работает только для ресурсов, которые вы объявляете локально, например, сами стили и т. д.
Однако, как я уже говорил, вам не нужно никуда объединять generic.xaml
, может быть, вам следует просто изменить кисти и другие ресурсы, используемые вне стилей, и объединить только эти ресурсы в app.xaml
.
Также обратите внимание, что стили не обязательно должны быть в generic.xaml для поведения "стиля по умолчанию" - если для него доступен стиль с ключом, равным типу элемента (глобально или в локальных ресурсах), то он будет использовать стиль в качестве стиля по умолчанию. generic.xaml
- это просто удобство.
Проверьте этот ответ.
Для других пользовательских кистей и т. Д. Вам необходимо явно ссылаться на эти ресурсы.
Вам также следует проверить содержимое WindowDictionary.xaml
, эта ошибка имеет определенный запах.