当鼠标进入窗口时,使WPF网格向上滑动

时间:2012-06-04 04:43:42

标签: c# wpf xaml triggers storyboard

我目前有XAML:

<Grid Name="WindowGrid">
    <Grid Height="66" HorizontalAlignment="Stretch" Margin="0" Name="ControlsGrid" VerticalAlignment="Bottom" Background="#B4000000" />
</Grid>

我想要的是当鼠标进入窗口(或者甚至是WindowGrid)时,ControlGrid会向上滑动,反之亦然(当光标离开时,它会向下滑动)。我在WPF / XAML方面经验不足,在WinForms方面拥有最丰富的经验。我知道有一种方法可以用故事板/触发器来做到这一点,但我看到的例子太混乱了。

1 个答案:

答案 0 :(得分:2)

使用事件触发器执行此操作:

<Grid Name="WindowGrid">

    <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>

    <!-- 
        This is a sample content to demostrate animation;
        Without it 'WindowGrid' will be collapsed.
    -->
    <ListBox />

    <Grid Margin="0" Name="ControlsGrid" VerticalAlignment="Bottom" Background="#B4000000" />
</Grid>