Пользовательская кнопка WPF, которая показывает состояние - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу создать кнопку, которая включает некоторые опции и отображает, если опции включены с двумя разными изображениями. Когда кнопка нажимается в первый раз, она переходит в true и должна отображать image_true. При повторном нажатии он должен вернуться к значению false и отобразить image_false.
Мой первый вопрос: Button имеет действие защелки, поэтому после нажатия оно возвращается к значению false. Есть ли способ изменить это поведение?
Если нет, я мог бы просто использовать элемент другого типа, например checkbox.

В обоих случаях: как назначить разные изображения для обоих состояний?

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

1 Ответ

0 голосов
/ 27 апреля 2018

Этого можно добиться, используя ToggleButton, который содержит три состояния (null, true, false) для свойства IsChecked, кроме того, вам нужно написать шаблон элемента управления и поместить два триггера (или три для всех предыдущих состояний), как показано ниже:

    <ToggleButton Width="75" Height="75" >
    <ToggleButton.Template>
        <ControlTemplate TargetType="ToggleButton">
            <Border Name="PART_Border">
                <Image Name="PART_Image"  ></Image>
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter TargetName="PART_Image" Property="Source">
                        <Setter.Value>
                            <BitmapImage  UriSource="/images/first.PNG" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <Trigger Property="IsChecked" Value="False">
                    <Setter TargetName="PART_Image" Property="Source">
                        <Setter.Value>
                            <BitmapImage UriSource="/images/second.PNG" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>

После этого вам нужно добавить изображения в ваш проект и убедиться, что их действие по сборке (из свойства) - это «Ресурсы», и в результате вы получите следующий результат: First state Second state

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...