@gmikhail94

WPF. XAML. Не работает событие MouseUp для ЛКМ. Как исправить?

Есть свой стиль для кнопки. Сама кнопка, это два прямоугольника (на одном фоновый цвет, на другом изображение с прозрачностью).
<Rectangle Name="RectangleBackground" 
        HorizontalAlignment="Stretch" 
        Fill="#D01600" 
        Opacity="0"/>
<Rectangle Name="Rectangle" 
        HorizontalAlignment="Stretch" 
        Margin="5" 
        Fill="{TemplateBinding Control.Background}" 
        Opacity="1"/>

Все основные события работают (MouseEnter, MouseLeave, MouseDown). Вот пример одного из них:
<EventTrigger RoutedEvent="MouseDown" SourceName="Rectangle">
        <EventTrigger.Actions>
                <BeginStoryboard>
                        <Storyboard>
                                <DoubleAnimation Storyboard.TargetName="RectangleBackground"
                                        Storyboard.TargetProperty="Opacity"
                                        From="1" To="0.5" Duration="0:0:0.15"/>
                        </Storyboard>
                </BeginStoryboard>
        </EventTrigger.Actions>
</EventTrigger>

Но при обработке события MouseUp оно действует только на ПКМ и СКМ. Вопрос, как отловить событие отпускания ЛКМ? И почему MouseUp отрабатывает не так как я ожидаю? В MSDN написано что событие должно происходить при отпускании любой кнопки мыши.
  • Вопрос задан
  • 1068 просмотров
Решения вопроса 1
@gmikhail94 Автор вопроса
Как мне подсказали, проблема в SourceName, если использовать его с PreviewMouseUp или PreviewMouseLeftButtonUp. Без него работает:
<EventTrigger RoutedEvent="PreviewMouseUp">
        <EventTrigger.Actions>
                <BeginStoryboard>
                        <Storyboard>
                                <DoubleAnimation Storyboard.TargetName="RectangleBackground"
                                        Storyboard.TargetProperty="Opacity"
                                        From="1" To="0.5" Duration="0:0:0.15"/>
                        </Storyboard>
                </BeginStoryboard>
        </EventTrigger.Actions>
</EventTrigger>

PS: Заставить работать MouseUp или хотя бы обнаружить почему оно не работает - так и не удалось.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Sumor
Возможно где-то выше по визуальному дереву есть обработка Click, которая и "съедает" LeftButtonUp.
Попробуйте использовать PreviewMouseLeftButtonUp.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы