WPF XAML Стиль кнопки по умолчанию События мыши переопределяются? - PullRequest
0 голосов
/ 22 февраля 2019

(Извините, я знаю, что заголовок паршивый; я очень открыт для предлагаемых изменений)

Мне нужна кнопка, чтобы иметь четкий визуальный вид при нажатой кнопке мыши и восстановить ее первоначальный видкогда мышь отпущена (я специально НЕ ищу "переключение" поведения).В моем случае я просто хочу, чтобы цвет фона был другим, пока нажата кнопка мыши.

Я нашел несколько примеров, но все они страдают одной и той же проблемой: эффекты не появляются, пока мышь не покинет кнопку, как будто что-то еще переопределяет цвет фона на основе события, которое у меня есть.специально не охвачены.

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

Вот одна вещь, которую я попробовал:

<Window.Resources>
    <Style TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsPressed" Value="True">
                <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="Coral" Duration="0:0:2" />
                    </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

В результате фон превращается в Коралл, но изменения видны только после того, как мышь уходит;пока мышь находится над, фон остается серовато-синим (стиль наведения мыши по умолчанию).Плюс это оставляет кнопку Коралл после окончания мероприятия;Мне нужен соответствующий триггер для момента IsPressed = False, но если я попытаюсь добавить его, окно вообще не загрузится (исключение разметки выдается).

Я пробовал это, с MouseDown, Button.MouseDown, PreviewMouseDown и т. Д. *

<Window.Resources>
    <Style TargetType="Button">
        <Style.Triggers>
            <EventTrigger RoutedEvent="Button.MouseDown">
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)" To="Coral" Duration="0:0:2" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

... и это вообще ничего не сделало.

Так что я думаю, что первый подход - правильный путь, но почему он таков?переопределены стилем наведения мыши?Как заставить стиль IsPressed иметь приоритет?

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