在WinForm中使用WPF的奇怪渲染问题

时间:2013-07-30 13:23:16

标签: .net wpf winforms user-interface user-controls

我正在UserControl内的DataGrid上显示WPF UserControl(其中包含WinForm和另一个ElementHost用于分页)。当我显示该表单并尝试将其呈现给GUI时,我收到以下错误

UIElement.Measure(availableSize) cannot be called with NaN size

我已检查过,并且没有任何Size对象为null或具有意外值。

让我感到困惑的是,如果我在通话前显示MessageBox,则表单会完美呈现。相同的UserControl也可以在不同的WinForm上完美呈现,并且在我的Win8电脑上进行测试时效果很好,但在Win7服务器上没有,任何想法都会受到赞赏!

感谢。

1 个答案:

答案 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);
}