Стили XAML — как использовать BasedOn при переопределении сработавшего установщика

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

<Style x:Key="SmallButtonAsRadioButton" TargetType="RadioButton">
    <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="RadioButton">
                <Grid x:Name="Container">
                    <Image x:Name="img" Source="/Resources/Elements/Buttons/10.png" Margin="6" />
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsKeyboardFocused" Value="True">
                        <Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/11.png" />
                        <Setter TargetName="img" Property="Margin" Value="0" />
                    </Trigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsKeyboardFocused" Value="True" />
                            <Condition Property="IsChecked" Value="True" />
                        </MultiTrigger.Conditions>
                        <Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/12.png" />
                    </MultiTrigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsKeyboardFocused" Value="False" />
                            <Condition Property="IsChecked" Value="True" />
                        </MultiTrigger.Conditions>
                        <Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/12a.png" />
                        <Setter TargetName="img" Property="Margin" Value="6" />
                    </MultiTrigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/12.png" />
                        <Setter TargetName="img" Property="Margin" Value="0" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Мне нужно создать новый стиль на основе этого, который использует разные изображения. Очевидно, я хотел бы повторно использовать этот стиль, но я не уверен, как переопределить эти установщики изображений. Что-то типа:

<Style x:Key="SmallButtonAsRadioButtonBlue" BasedOn="{StaticResource SmallButtonAsRadioButton}" TargetType="RadioButton">
    <Setter - (Override image...
    <Setter - (Override image...

Любое понимание ценится.


person BabaBooey    schedule 11.02.2010    source источник


Ответы (1)


то, что вы могли бы сделать, это получить от переключателя в вашем собственном пользовательском элементе управления с изображениями в качестве свойств. тогда вам не нужно было бы переопределять стиль (вы могли бы просто определить его один раз), и каждый раз, когда вы хотели использовать разные изображения, вы могли бы устанавливать их в xaml. (или стиль - без повторной переделки шаблона управления, просто с помощью сеттеров)

person Aran Mulholland    schedule 13.02.2010