Событие для действия MouseOver в WPF - PullRequest
9 голосов
/ 17 сентября 2010

Я хочу обрабатывать события мыши над мышью и для сетки. Есть ли у WPF события для этого? Примечание: я не хочу использовать свойство IsMouseOver в моем стиле. Я использовал MouseEnter и MouseLeave, но без особого успеха.

Ответы [ 4 ]

7 голосов
/ 17 сентября 2010

Элемент управления WPF Grid поддерживает события MouseEnter и MouseLeave. Вы должны иметь возможность подключать обработчики событий для обоих.

7 голосов
/ 17 сентября 2010

Вы можете использовать EventTriggers для захвата событий MouseEnter и MouseLeave в XAML.

Вот простой пример изменения фона StackPanel в сетке:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition/>
    <RowDefinition/>
  </Grid.RowDefinitions>
  <StackPanel Grid.Row="1" Background="Blue">
    <StackPanel.Style>
      <Style>
        <Style.Triggers>
          <EventTrigger RoutedEvent="StackPanel.MouseEnter">
            <EventTrigger.Actions>
              <BeginStoryboard>
                <Storyboard>
                  <ColorAnimation 
                      AutoReverse="False" 
                      Duration="0:0:1" 
                      From="Blue" To="Red"
                      AccelerationRatio="1" 
                      Storyboard.TargetProperty="(StackPanel.Background).(SolidColorBrush.Color)"
                      FillBehavior="HoldEnd">
                  </ColorAnimation>
                </Storyboard>
              </BeginStoryboard>
            </EventTrigger.Actions>
          </EventTrigger>
          <EventTrigger RoutedEvent="StackPanel.MouseLeave">
            <EventTrigger.Actions>
              <BeginStoryboard>
                <Storyboard>
                  <ColorAnimation 
                      AutoReverse="False" 
                      Duration="0:0:1" 
                      From="Red" To="Blue"
                      AccelerationRatio="1" 
                      Storyboard.TargetProperty="(StackPanel.Background).(SolidColorBrush.Color)"
                      FillBehavior="HoldEnd">
                  </ColorAnimation>
                </Storyboard>
              </BeginStoryboard>
            </EventTrigger.Actions>
          </EventTrigger>
        </Style.Triggers>
      </Style>
    </StackPanel.Style>
  </StackPanel>
</Grid>
2 голосов
/ 19 октября 2015

Более просто: Вы можете реализовать два события PointerMoved и PointerExited. У меня это сработало.

2 голосов
/ 19 сентября 2010

События MouseEnter и MouseLeave могут обрабатываться, вы можете проверить свой кодовый набор e.handled = flase;

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