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

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

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

DataGrid行通常扩展到整个页面,第二行默认情况下在页面的视图模型中由某些布尔值隐藏。 我现在想实现调整第二行高度的大小并影响第一行的高度的功能。 这样,如果DataGrid中有很多内容,则可以使用滚动条进行查看。

行定义如下:

<Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="{Binding ControlHeight}" />
</Grid.RowDefinitions>

控件的连接方式如下:

<local:CustomControl Grid.Row="1" x:Name="SomeControl"
                     local:AnimateSlideInFromBottomMarginProperty.Value="{Binding ControlVisible}" /> 

AnimateSlideInFromBottomMarginProperty是一个动画,我希望将其与整个调整大小过程结合在一起,但是我目前不知道该怎么做。

自定义控件对视图模型不可见,因此无法以某种方式附加动画代码。 现在,我最好的选择是拥有一个属性ControlHeight,该属性会在某些按钮单击命令上发生变化。但是我不满意将其设置为某个值(例如300),而不是知道控件实际需要的Auto大小。

以下是命令方法:

public void OpenControl()
{
    ControlVisible = true;
    ControlHeight = 300;
}

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

也许有人对如何 1.更改属性以使其像双重动画一样加速 1.1或完全不同且更优雅的东西 2.为视图模型提供定制控件的Auto大小,并将其设置/从0设置为Auto。 2.1或者,也许你猜到了,它完全不同并且更优雅

如果我需要更清楚地说明问题,请告诉我。

ccczzzxxx 回答:使用动画动态设置网格行/列大小

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3161418.html

大家都在问