2013-04-08 112 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

相关问题