我正试图用一个可扩展/可折叠StackPanel控制CheckBox.首先,我尝试在XAML中直接执行此操作,但我无法轻松实现.对于我来说,为这项任务提供一些代码隐藏对我来说不是问题.到目前为止,我有:
private void activateCheck_Checked(object sender, RoutedEventArgs e)
{
DoubleAnimation expand = new DoubleAnimation(200, TimeSpan.FromMilliseconds(500));
expandableStack.BeginAnimation(HeightProperty, expand);
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个AnimationException,说:
无法使用'System.Windows.Media.Animation.DoubleAnimation'为'System.Windows.Controls.StackPanel'上的'Height'属性设置动画.有关详细信息,请参阅内部异常
这有什么不对?
如果未通过设置From属性显式指定动画的起始值,则动画将从属性的当前值开始.NaN但是,如果是这样,动画就不知道从哪里开始.
因此,你有两个选择,要么你明确地设置了StackPanel Height
var expand = new DoubleAnimation(200, TimeSpan.FromMilliseconds(500));
expandableStack.Height = 0;
expandableStack.BeginAnimation(StackPanel.HeightProperty, expand);
Run Code Online (Sandbox Code Playgroud)
或者你告诉动画从哪里开始
var expand = new DoubleAnimation(0, 200, TimeSpan.FromMilliseconds(500));
expandableStack.BeginAnimation(StackPanel.HeightProperty, expand);
Run Code Online (Sandbox Code Playgroud)
如果您想从当前高度开始,您可以使用ActualHeight起始值:
var expand = new DoubleAnimation(expandableStack.ActualHeight,
200, TimeSpan.FromMilliseconds(500));
expandableStack.BeginAnimation(StackPanel.HeightProperty, expand);
Run Code Online (Sandbox Code Playgroud)