我有一个大型 WPF 应用程序。我正在寻找使 UI 多线程。作为该过程的一部分,我将一些应用程序级别的控件和样式资源移至窗口级别。(我从经验中知道,除非我在应用程序线程上,否则我不能在应用程序级别使用 DynamicResource 和解析。)无论如何,我移动了一堆控制资源。该应用程序工作时发现一个讨厌的问题:我在 FrameworkElement 高度和宽度上的所有动画都坏了。它们都失败了,因为控件的宽度或高度为 NaN。当控件模板在应用程序级别注册时,这些动画都可以工作。我为高度或宽度设置动画的所有控件都具有适当的默认高度或宽度值,它们不是 NaN。为什么资源位置会影响这一点?
问问题
452 次
2 回答
1
使用实际宽度和实际高度。Nan表示这些属性还没有设置。 https://stackoverflow.com/a/607849/3955716
于 2016-10-10T17:35:18.170 回答
0
这已经晚了,但以防其他人参与其中。DoubleAnimation 是一个帮助类,它允许双精度值以平滑的方式从一个值转到另一个值。由于您没有为网格明确指定宽度,因此默认值为 NaN。因此,DoubleAnimation 试图从 NaN 变为无论目标值。由于显而易见的原因,这是无法做到的。如果您设置网格的宽度,它应该可以正常工作。
一种解决方法是在构造函数中加载后设置网格宽度:
public Grid()
{
InitializeComponent();
this.Loaded += (s, _) => this.Width = this.ActualWidth;
}
希望这有帮助。
于 2019-09-21T07:53:02.753 回答