Скажем, есть class library. В ней есть окно window1.xaml и словарь ресурсов res.xaml. В словаре стиль окна определен, а так же стили контролов в этом окне. Как использовать стиль окна, кроме как делать его дефолтовым для класса окна, я не придумал, но с использованием стилей контролов вроде бы проблем нет:
<Window x:Class="...Window1">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="res.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<\Window.Resources>
</Window>
Теперь внутри окна все стили доступны. В данной статье описывается создание присоединенного к окну свойства, которое добавляло бы в коллекцию словарей ресурсов окна нужные нам словари. Выглядит это примерно так:
<Window x:Class="...Window1"
xmlns: resources="..."
resources:SharedResources.MergedDictionaries="res.xaml">
</Window>
При этом в коллекцию FrameworkElement.Resources.MergedDictionaries
добавится новый словарь. При этом! и стиль окна можно будет использовать. Но есть одно НО: в design time эти ресурсы не видно, что совсем неудобно. Ведь по идее одно и то же делается:
<Window x:Class="...Window1">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="res.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<\Window.Resources>
</Window>
в общем-то равнозначно
resources:SharedResources.MergedDictionaries="res.xaml"
но только в первом случае ресурсы видно (к ним по клику перейти можно, окно VS отображает нормально, с применением стилей), а во втором VS стили не видит. Есть идеи, как это поправить?