2010-09-17 12 views
8

में माउसओवर एक्शन के लिए ईवेंट मैं माउस को एक ग्रिड के लिए ईवेंट और माउस आउट करना चाहता हूं। क्या डब्ल्यूपीएफ के लिए घटनाएं हैं। नोट: मैं अपनी शैली में IsMouseOver प्रॉपर्टी का उपयोग नहीं करना चाहता हूं। मैंने माउसइंटर और माउसलेव विधि का उपयोग किया है लेकिन बिना किसी सफलता के।डब्ल्यूपीएफ

+0

"मैं अपनी शैली में IsMouseOver संपत्ति का उपयोग नहीं करना चाहता": क्यों? आप वास्तव में क्या करने की कोशिश कर रहे हैं? –

+0

MouseEnter और MouseLeave आपके लिए क्यों काम नहीं कर रहे हैं? – Bubblewrap

उत्तर

7

आप XAML में MouseEnter और MouseLeave ईवेंट को कैप्चर करने के लिए EventTriggers का उपयोग कर सकते हैं।

<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 घटनाओं का समर्थन करता है:

यहाँ एक सरल उदाहरण है कि एक ग्रिड में एक StackPanel की पृष्ठभूमि को बदल देता है। आप दोनों के लिए इवेंट हैंडलर को हुक करने में सक्षम होना चाहिए।

1

माउसइंटर और माउसलेव घटनाओं को संभाला जा सकता है, आप अपना कोड सेट e.handled = flase देख सकते हैं;

2

अधिक सरल: आप दो घटनाओं को पॉइंटरमेड और पॉइंटर एक्साइटेड लागू कर सकते हैं। यह मेरे लिए काम किया।