Кнопка переключения - изменение значка при нажатии - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть приложение в WPF. Я использую значки энтипо, и один из них удален как ресурс:

<Grid.Resources>
  <iconPacks:Entypo x:Key="PlayIcon" Width="50" Height="30" Kind="ControllerPlay"></iconPacks:Entypo>                              
</Grid.Resources>

Допустим, у меня есть две такие иконки (значок воспроизведения / паузы), и я хочу переключаться между ними, когда пользователь нажимает ToggleButton. Я придумал что-то вроде этого, но, к сожалению, это не работает:

<ToggleButton>
   <Image>
      <Image.Style>
          <Style TargetType="{x:Type Image}">
             <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ToggleButton}, Path=IsChecked}"
                 Value="true">
                    <Setter Property="Source"
                     Value="{StaticResource PauseIcon}" />
                 </DataTrigger>
                 <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ToggleButton}, Path=IsChecked}"
                  Value="false">
                     <Setter Property="Source"
                      Value="{StaticResource PlayIcon}" />
                 </DataTrigger>
              </Style.Triggers>
            </Style>
       </Image.Style>
   </Image>
</ToggleButton>

Может ли кто-нибудь сказать мне, могу ли я достичь этого (с небольшими изменениями) или указать мне правильное направление?

1 Ответ

0 голосов
/ 08 ноября 2018

Вы не можете установить Source для Image на PackIconEntypo. Вместо этого установите Content свойство ToggleButton:

<ToggleButton>
    <ToggleButton.Style>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Content" Value="{StaticResource PlayIcon}" />
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="true">
                    <Setter Property="Content" Value="{StaticResource PauseIcon}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>
...