我正在UserControl
内的DataGrid
上显示WPF UserControl
(其中包含WinForm
和另一个ElementHost
用于分页)。当我显示该表单并尝试将其呈现给GUI时,我收到以下错误
UIElement.Measure(availableSize) cannot be called with NaN size
我已检查过,并且没有任何Size对象为null或具有意外值。
让我感到困惑的是,如果我在通话前显示MessageBox
,则表单会完美呈现。相同的UserControl
也可以在不同的WinForm
上完美呈现,并且在我的Win8电脑上进行测试时效果很好,但在Win7服务器上没有,任何想法都会受到赞赏!
感谢。
答案 0 :(得分:0)
如何设置'availableSize'?你在哪里获得这个价值?如果没有为某些内容指定大小(如宽度),然后获取宽度值,则会返回“nan”。所以,如果你正在做类似
的事情double availableSize = someControl.Width;
将availableSize设置为'double.nan'。因为它不是真正的价值。它没有真正设定。它不是null,但它没有被设置为任何东西。这样,在给定正确的上下文的情况下,控件可以自动调整到其容器。
无论如何,如果availableSize == nan
并且您正试图致电:
UIElement.Measure(availableSize)
您将看到您所看到的NaN异常。
希望这能为你解决这个问题。您可以在使用之前检查它是否为NaN。
if(availableSize != double.Nan)
{
measurement = UIElement.Measure(availableSize);
}