XAML: применение стилей к вложенным элементам управления - PullRequest
3 голосов
/ 14 апреля 2011

В WPF, Prism v4, у меня есть панель инструментов, которая действует как регион. В этом регионе я ввожу UserControls, который содержит кнопки и разделители для панели инструментов. Проблема заключается в том, что поскольку кнопки теперь находятся в пользовательском элементе управления, стили панели инструментов больше не применяются.

Я может решить эту проблему, определив стили:

<Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}"/>
<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"/>

Но я бы хотел этого избежать, потому что у меня есть сотни кнопок. Поэтому мой вопрос: могу ли я определить стили для всех кнопок в панели инструментов из словаря ресурсов?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 07 июля 2011

Те же методы, которые были упомянуты CodeNaked и Marat Khasanov, также можно использовать в стиле панели инструментов по умолчанию, поэтому вам не нужно их сбрасывать локально.

    <Style TargetType="{x:Type ToolBar}">
        <Style.Resources>
            <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" />
            <Style TargetType="{x:Type Separator}" BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
        </Style.Resources>
        <!-- etc... -->
    </Style>

Я ожидал, что это будет поведение панели инструментов по умолчанию, но я обнаружил, что оно требует явного определения.

Надеюсь, это поможет. :)

3 голосов
/ 14 апреля 2011

Вы можете использовать что-то вроде:

<Style TargetType="Separator" BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />
<Style TargetType="Button" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" />

Если вы поместите это в ресурсы панели инструментов, то оно будет применяться ко всем кнопкам внутри него.

2 голосов
/ 14 апреля 2011

Поместите базовые стили в ресурсы панели инструментов:

<ToolBar>
    <ToolBar.Resources>
        <Style TargetType="{x:Type Button}"
               BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"/>
        <Style TargetType="{x:Type Separator}"
               BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}"/>
    </ToolBar.Resources>
    ...
</ToolBar>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...