C# 使用动画动态设置网格行/列大小

C# 使用动画动态设置网格行/列大小,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,让我们假设一个页面有两个类似于图片的网格行。第一行包含DataGrid,第二行附加了自定义控件 DataGrid行通常延伸到整个页面,第二行默认情况下由页面视图模型中的某个bool隐藏。 我现在想实现调整第二行高度的功能,并影响第一行的高度。 这样,如果DataGrid中有大量内容,可以使用滚动条查看 行定义如下所示: <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition

让我们假设一个页面有两个类似于图片的网格行。第一行包含DataGrid,第二行附加了自定义控件

DataGrid行通常延伸到整个页面,第二行默认情况下由页面视图模型中的某个bool隐藏。 我现在想实现调整第二行高度的功能,并影响第一行的高度。 这样,如果DataGrid中有大量内容,可以使用滚动条查看

行定义如下所示:

<Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="{Binding ControlHeight}" />
</Grid.RowDefinitions>
<local:CustomControl Grid.Row="1" x:Name="SomeControl"
                     local:AnimateSlideInFromBottomMarginProperty.Value="{Binding ControlVisible}" /> 
也许有人有个好主意 1.更改属性以使其行为类似于双动画 1.1或者是完全不同的更优雅的东西 2.为视图模型提供自定义控件的
Auto
大小,并将其从0设置/增加到
Auto
。 2.1或者,你猜到了,是完全不同的、更优雅的东西


如果我需要使问题更清楚,请告诉我。

我首先考虑的是将行定义设置为第二行的AutoDebug。然后可以设置customcontrol的高度动画,该行将响应。您是否考虑过为自定义控件的scalex设置动画?然后你有从0到1的固定值,它可以是xaml中的一个故事板,有一个数据或事件触发器来运行它。嗯。我以前尝试过设置几个高度属性,但没有设置控件的高度属性。所以现在网格的大小被正确地调整了,这正是我所需要的。现在我想我会为这部电影想一些动画,很好。如果我足够快,我可以自己回答这个问题:首先我要考虑的是将行定义设置为第二行的AutoDebug。然后可以设置customcontrol的高度动画,该行将响应。您是否考虑过为自定义控件的scalex设置动画?然后你有从0到1的固定值,它可以是xaml中的一个故事板,有一个数据或事件触发器来运行它。嗯。我以前尝试过设置几个高度属性,但没有设置控件的高度属性。所以现在网格的大小被正确地调整了,这正是我所需要的。现在我想我会为这部电影想一些动画,很好。如果我足够快,我可以稍后自己回答:)
public void OpenControl()
{
    ControlVisible = true;
    ControlHeight = 300;
}

public void CloseControl()
{
    ControlVisible = false;
    ControlHeight = 0;
}