У меня возникли проблемы с общими стилями между различными проектами. Вот мои проекты: -Задание стилей в библиотеке управления пользователями WPF
- «Common» - библиотека классов, содержащая общие стили WPF.
- «Плагин» - библиотека классов, содержащая пользовательский элемент управления (не пользовательский элемент управления).
- «Основное приложение» - основное приложение WPF, которое отображает пользовательский элемент управления, определенный в «Плагине».
«Обычное» и «Основное приложение» находятся в одном решении, а «Плагин» - в своем собственном решении.
Стили в «Основные приложения» работы над проектом штрафа - он ссылается на «общий» проект и имеет следующее App.xaml: -
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Common;component/MyStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
При редактировании XAML файлы в проекте «Core приложение» , Я получаю intellisense по именам стилей, не squiggly подчеркивает, и все отлично работает во время выполнения тоже.
Задача с проектом «Плагин». Я ссылался на сборку «Common» и создал файл \ Themes \ Generic.xaml, содержащий тот же слияние XAML, что и выше. Generic.xaml имеет встроенное действие «Страница», и я добавил следующий AssemblyInfo.cs: -
[assembly: ThemeInfo(ResourceDictionaryLocation.None,
ResourceDictionaryLocation.SourceAssembly)]
Когда я отредактировать XAML из пользовательского элемента управления в этом проекте «Plugin», стили «Обычная» сборка не отображается в intellisense, а VS/Resharper помещает строчку под их именами. Я даже добавил стиль непосредственно к Generic.xaml, но UC тоже не может этого понять. Пользовательский элемент управления выглядит примерно так: -
<UserControl ..blah..>
<StackPanel>
<TextBlock Style="{StaticResource AStyleInCommonAssembly}" Text="Hello"/>
<TextBlock Style="{StaticResource AStyleInGenericXaml}" Text="World"/>
</StackPanel>
</UserControl>
Во время выполнения WPF делает правильно применять стили, которые находятся в «Общие» сборки (я предполагаю, что это найти их из словаря сливаются в App.xaml) , Однако он все еще не может найти стиль, который я добавил непосредственно в Generic.xaml.
Что мне не хватает? Этот подход работает только с пользовательскими элементами управления, а не с пользовательскими элементами управления, с которыми я имею дело? Мой приоритет - заставить все работать во время выполнения, но получение опыта разработки/времени/intellisense будет бонусом.