Могу ли я добавить ресурсы или словарь ресурсов в стиль?

Можно ли определить ResourceDictionary в стиле?

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

Что-то вроде

<Style x:Key="RedButtonsPanel" TargetType="{x:Type StackPanel}">
    <Setter Property="Orientation" Value="Horizontal" />
    <Setter Property="StackPanel.Resources">
        <Setter.Value>
            <ResourceDictionary>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="Background" Value="Red" />
                </Style>
            </ResourceDictionary>
        </Setter.Value>
    </Setter>
</Style>

В приведенном выше коде возникает ошибка, связанная с тем, что значение свойства Setter не может быть нулевым (даже если оно явно не нулевое).

Я могу сделать что-то вроде

<ResourceDictionary x:Key="RedButtons">
    <Style TargetType="{x:Type Button}">
        <Setter Property="Width" Value="100" />
        <Setter Property="Background" Value="Red" />
    </Style>
</ResourceDictionary>

<StackPanel Resources={StaticResource RedButtons} />

Однако мне было интересно, есть ли способ объединить ResourceDictionary в стиль.

7
задан Dave Clemmer 13 August 2011 в 15:54
поделиться