【发布时间】:2018-09-13 01:26:46
【问题描述】:
我有班级模型
public class Model : INotifyPropertyChanged
...
private GridLength detailsPanelHeight { get; set; }
public GridLength DetailsPanelHeight
{
get { return detailsPanelHeight; }
set
{
if (!GridLength.Equals(detailsPanelHeight, value))
{
detailsPanelHeight = value;
OnPropertyChanged("DetailsPanelHeight");
}
}
}
...
部分 XAML 代码:
<RowDefinition Height="{Binding DetailsPanelHeight}" />
做动画的代码(平滑地改变行高):
var animate = new Animation(d => currentItem.DetailsPanelHeight = d, 0, 100);
animate.Commit(this, "ExpandAnimation", 50, 1000, Easing.SpringOut);
折叠行的代码:
var animate = new Animation(d => currentItem.DetailsPanelHeight = d, 100, 0);
animate.Commit(this, "CollapseAnimation", 50, 1000, Easing.SpringOut);
它第一次工作,但第二次我得到一个错误:“值小于 0 或不是数字\n参数名称:值”。我看到d 的值小于零。
我能做些什么来解决这个问题?
【问题讨论】:
-
@Diego,它没有帮助。我用 0.001 代替 0:
var animate = new Animation(d => currentItem.DetailsPanelHeight = d, 100, 0.001); -
也许问题在于 double 和 GridLength 之间的转换。有可能吗?
标签: animation xamarin.forms gridlength