让我们假设一个页面有两个类似于图片的网格行。第一行包含一个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或者,也许你猜到了,它完全不同并且更优雅
如果我需要更清楚地说明问题,请告诉我。