Флажок WPF, такой как «принятый ответ» в StackOverflow - PullRequest
3 голосов
/ 07 апреля 2010

Я хотел бы создать настраиваемый флажок, который будет вести себя точно так же, как и флажок StackOverflow «принять ответ»:

альтернативный текст http://sstatic.net/so/img/vote-accepted-on.png

альтернативный текст http://sstatic.net/so/img/vote-accepted.png

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

Я немного новичок, когда дело доходит до WPF ControlTemplates, поэтому у меня возникли проблемы с настройкой ControlTemplate CheckbBox для отображения этих изображений, когда они отмечены / не отмечены. Может ли кто-нибудь указать мне правильное направление?

1 Ответ

15 голосов
/ 07 апреля 2010

Вот простая версия:

<ControlTemplate TargetType="CheckBox">
  <Image Name="TickImage" Source="HollowTick.png" />
  <ControlTemplate.Triggers>
    <Trigger Property="IsChecked" Value="True">
      <Setter TargetName="TickImage" Property="Source" Value="FilledTick.png" />
    </Trigger>
  </ControlTemplate.Triggers>
</ControlTemplate>

Это довольно элементарно, потому что не учитывает такие вещи, как поля и отступы, но они, вероятно, сейчас не важны для вас. Ключевым моментом является использование триггера и сеттера для изменения источника изображения, когда IsChecked имеет значение true - вы должны быть в состоянии создать оттуда.

...