2010-09-17 3 views
8

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

+0

«Я не хочу использовать свойство IsMouseOver в своем стиле»: почему? Что вы пытаетесь сделать точно? –

+0

Почему MouseEnter и MouseLeave не работают для вас? – Bubblewrap

ответ

7

Вы можете использовать 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> 
7

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

1

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

2

Проще всего: Вы можете реализовать два события PointerMoved и PointerExited. Это сработало для меня.

Смежные вопросы