Добавить комментарий - CodeHelper

Добавить комментарий

Скажем, есть 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 стили не видит. Есть идеи, как это поправить?

Внимание! Вы собираетесь отправить информацию от имени анонимного пользователя.
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.