Изменение стиля значка для кнопки переключения в xaml

1

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

Однако у меня есть статические стили значков, а не изображения, поэтому мне интересно, как я могу это сделать.

В качестве отправной точки, если я создам свой тумблер, как это:

 <ToggleButton Style="{StaticResource ToggleButtonStyle}">                             
     <Path Style="{StaticResource Test1IconStyle}"  HorizontalAlignment="Right" />                
 </ToggleButton>

затем он отображается с помощью стиля ToggleButton и правильной иконки.

Итак, теперь скажем, я нажимаю кнопку, мне нужно сбросить "Path" в "Test2IconStyle" на основе значения isChecked.

Это возможно?

Теги:
xaml
wpf

1 ответ

2
Лучший ответ

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

<StackPanel>
    <StackPanel.Resources>
        <Path x:Key="Test1"/>
        <Path x:Key="Test2"/>
    </StackPanel.Resources>
    <ToggleButton>
        <ToggleButton.Style>
            <Style TargetType="ToggleButton"
                   BasedOn="{StaticResource ToggleButtonStyle}">
                <Setter Property="Content" Value="{StaticResource Test1}"/>
                <Style.Triggers>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter Property="Content"
                                Value="{StaticResource Test2}"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ToggleButton.Style>
    </ToggleButton>
</StackPanel>
  • 0
    спасибо за ваш быстрый ответ - если я использую <Path x: Key = "Test1" Style = "{StaticResource Test1IconStyle}" /> <Path x: Key = "Test2" Style = "{StaticResource Test2IconStyle}" />, тогда он делает изменить значок Фантастическая! с одной незначительной проблемой стиль основной кнопки не установлен, см. выше, я использую стиль основной кнопки, а затем добавляю значки поверх него
  • 1
    Для этого вы можете использовать BasedOn="{StaticResource ToggleButtonStyle}" . Я обновил ответ с этим.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню