2

の内側にWPF (ページング用のと別のUserControlものを含む) を表示しています。そのフォームを表示して GUI にレンダリングしようとすると、次のエラーが表示されますDataGridUserControlWinFormElementHost

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

確認したところ、Size オブジェクトのいずれも null または予期しない値を持っていません。

私を混乱させているのはMessageBox、呼び出しの直前に a を表示すると、フォームが完全にレンダリングされることです。同じUserControlことが別のサーバーでも完全にレンダリングWinFormされ、Win8 PC でテストするときに完全に機能しますが、Win7 サーバーでは機能しません。アイデアをいただければ幸いです。

ありがとう。

4

1 に答える 1

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);
}
于 2013-07-30T14:15:46.710 に答える