2013-04-08 75 views
0

我的請求是有一個2行的網格 - 第一行將填充組合框作爲數據庫查詢的搜索條件。第二行將是一個包含結果的DataGrid。如何向下滑動鼠標懸停在wpf上的動畫?

我想讓上面的網格從上面滑下來,當我將鼠標懸停在上面時,並在鼠標離開時向上滑動。我想我可以在頂部的「過濾器」有一個簡單的文本塊,並將它懸停在它上面會降低組合框?

我有類似的東西,但是當鼠標懸停在上面時,動畫會停止/停止。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="40"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <Grid Grid.Row="0"> 
     <Grid.Triggers> 
      <EventTrigger RoutedEvent="MouseEnter"> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation 
        Storyboard.TargetName="ControlsGrid" 
        Storyboard.TargetProperty="(Grid.Height)" 
        From="0" 
        To="66" 
        Duration="0:0:0.5" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
      <EventTrigger RoutedEvent="MouseLeave"> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation 
        Storyboard.TargetName="ControlsGrid" 
        Storyboard.TargetProperty="(Grid.Height)" 
        From="66" 
        To="0" 
        Duration="0:0:0.5" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Grid.Triggers> 

     <TextBlock HorizontalAlignment="Center" FontSize="20" Text="Filters..."/> 
    </Grid> 

    <Grid Margin="0" Name="ControlsGrid" VerticalAlignment="top" Background="Yellow"/> 
    <DataGrid Grid.Row="1" ColumnHeaderStyle="{DynamicResource GridViewColumnHeaderStyle}" Background="LightGray" RowBackground="LightYellow" AlternatingRowBackground="LightBlue" 
       x:Name="dataGridViewRoomQuery" BorderBrush="Gray" BorderThickness="5"/> 

</Grid> 

回答

0

與方法的問題是,「徘徊」網格(一種與事件觸發器)得到了MouseLeave事件每當ControlsGrid放在它上面。

你必須把ControlsGrid進入懸停電網:

<Grid Grid.Row="0" Background="Transparent"> 
    <Grid.Triggers> 
     <EventTrigger RoutedEvent="MouseEnter"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetName="ControlsGrid" 
             Storyboard.TargetProperty="Height" 
             To="66" Duration="0:0:0.5" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="MouseLeave"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetName="ControlsGrid" 
             Storyboard.TargetProperty="Height" 
             To="0" Duration="0:0:0.5" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Grid.Triggers> 

    <TextBlock HorizontalAlignment="Center" FontSize="20" Text="Filters..."/> 

    <Grid Name="ControlsGrid" Height="0" VerticalAlignment="Top" Background="Yellow"> 
    </Grid> 
</Grid> 
<DataGrid .../> 
+0

你說得對。謝謝。 – user1524713 2013-04-08 21:41:37

+0

我需要做什麼才能讓DataGrid上的ControlsGrid滑落,就像覆蓋層一樣?說400的高度?將DataGrid放置在上面的網格內(ControlsGrid上方)會使其向右移動,但鼠標在整個事物處都會觸發觸發器,只觸發上一行(「Filters ...」)。使用Visible = Collapsed並使可見性動畫化會更容易嗎? – user1524713 2013-04-08 21:55:08

相關問題