Стили XAML - как использовать BasedOn при переопределении сработавшего сеттера - PullRequest
2 голосов
/ 11 февраля 2010

Я использую стиль 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...

Любое понимание приветствуется.

1 Ответ

1 голос
/ 13 февраля 2010

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

...