Как наследовать / расширять стили из словаря ресурсов? - PullRequest
3 голосов
/ 01 сентября 2010

У меня проблемы с расширением одного из моих стилей, которые я определил в словаре Windows.Один, кажется, применяет стиль к моим элементам управления, как и ожидалось.Однако, если попытаться расширить стиль в одном из моих пользовательских элементов управления, используя свойство basedOn, он просто переопределяет основной, и все базовые стили исчезают.Вот пример:

В словаре ресурсов с именем dict1.xaml:

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="Pink"/>
</Style>  

В главном окне. Xaml:

<Window.Resources>
    <ResourceDictionary Source="dict1.xaml"/>
</Window.Resources>

В пользовательском элементе управления с именемuserControl1.xaml:

<UserControl.Resources>
    <Style  BasedOn="{StaticResource {x:Type Button}}" 
            TargetType="{x:Type Button}">
        <Setter Property="FontWeight" Value="Bold"/>
    </Style>
</UserControl.Resources>

Стиль в пользовательском элементе управления просто переопределяет стиль в словаре ресурсов, а шрифт выделяется жирным шрифтом.Если я удаляю стиль в пользовательском элементе управления, стиль в словаре включается, и фон становится розовым.Я хочу оба.

Есть идеи, что я здесь не так делаю?

спасибо.

1 Ответ

1 голос
/ 01 сентября 2010

Вам необходимо либо добавить словарь к ресурсам UserControl, либо добавить его к ресурсам App.XAML.

Как таковой, UserControl не может разрешить этот StaticResource - он входит в объемUserControl, а не окно, если это имеет смысл.

...