WPF

2010-09-17 24 views
8

'daki MouseOver eylemi için olay Bir kılavuz için fareyi ve fare dışı olayları işlemek istiyorum. WPF'nin bunun için olayları var mı. Not: IsMouseOver özelliğini benim tarzımda kullanmak istemiyorum. MouseEnter ve MouseLeave yöntemini kullandım ancak çok başarılı olamadım.WPF

+0

"IsMouseOver özelliğini benim tarzımda kullanmak istemiyorum": neden? Tam olarak ne yapmaya çalışıyorsun? –

+0

Neden MouseEnter ve MouseLeave sizin için çalışmıyor? – Bubblewrap

cevap

7

XAML'de MouseEnter ve MouseLeave olaylarını yakalamak için EventTriggers'ı kullanabilirsiniz.

<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

bir WPF Izgara kontrolü hem MouseEnter ve MouseLeave olayları destekler: Burada

bir Grid bir StackPanel arka planını değiştirir basit bir örnektir. Her ikisi için de olay işleyicilerini bağlayabilmelisiniz.

1

MouseEnter ve MouseLeave olayları işlenebilir, kodunuzu kontrol edebilirsiniz e.handled = flase;

2

Daha basit: İki olay PointerMoved ve PointerExited uygulayabilirsiniz. Benim için çalıştı.