如何设置DataGrid高度的动画

时间:2015-03-17 19:14:40

标签: wpf wpfdatagrid wpf-animation

所有

我有一个WPF数据网格,其中有一个模板列定义如下:

<DataGridTemplateColumn Width="105">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Height="35">
                <Button Style="{StaticResource tableButtonStyle}">
                    <ContentControl/>
                </Button>                   
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

按钮样式(仅当用户将鼠标移动到特定数据网格行时显示按钮)如下所示:

<!-- Disappearing button for tables -->
<Style x:Key="tableButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
    <Setter Property="Visibility" Value="Collapsed"/>
    <Style.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}},Path=IsMouseOver}" Value="True">
            <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

我想设置数据网格的高度,以便在隐藏按钮时为“X”单位高,或者在显示按钮时“Y”单位为高。这可以在xaml标记中实现吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我不知道在XAML中是否有办法做到这一点(我不知道因为我是xaml的新手)。
但是我会用代码隐藏来做到这一点。我会使用花哨的动画,例如:

private Storyboard sb=new StoryBoard();
private DoubleAnimation da=new DoubleAnimation();
da.From=datagrid.actualHeight;
da.to=x;
da.Duration = new Duration(TimeSpan.FromSeconds(0.5));
Storyboard.SetTargetProperty(da, new PropertyPath(yourDatagrid.HeigthProperty));
sb.Children.Add(da);
yourDatagrid.BeginStoryboard(sb);

也许你可以在ClickEvent中获得它。 希望这有帮助!