ネストされたコレクションプロパティがある場合、XCeed WPFプロパティグリッドコントロールで例外が発生します。その振る舞いはよく定義され、再現可能ですが、非常に奇妙です。ここでWPF PropertyGridが異常なNullReferenceExceptionをスローするメンバがnullでない場合のみ
は、例えば、クラス構造です:
Public Class MyTestBigClass
Public Property FirstProperty As New List(Of MyTestLittleClass)
End Class
Public Class MyTestLittleClass
Public Property SecondProperty As New List(Of Integer)
End Class
私は新しいMyTestBigClassを作成して、PropertyGridのにバインドします。そのフォームに移動し、FirstProperty行をクリックすると、Collection Editorダイアログがポップアップします。私は「追加」を数回押してコレクションのメンバーをいくつか作成しました。次に、ダイアログを閉じます。これまでのところうまくいき、FirstPropertyの予想される変更が実際に発生することを確認できます。
次に、FirstProperty行をもう一度クリックする以外は何もしません。コレクションエディタの代わりに、コレクションに追加したメンバーを表示する代わりに、NullReferenceExceptionが発生します。
ここは奇妙な部分です。
私が代わりにこれを言うために最後から2番目の行を変更した場合、例外が発生しません:
Public Property SecondProperty As List(Of Integer)
このコントロールにとNullReferenceExceptionを取り除く、と私はうまくバインドPropertyGridのを使用することができますされます。 SecondPropertyはほとんどの場合null(VBでの別名Nothing)なので、これはコード内の別の場所での問題を犠牲にしています。
さらに悪いことに、SecondProperty をどこでもに初期化すると、同じ例外が戻ってきます。私がコンストラクタ(VBの新しいサブ)を作成し、その内部にオブジェクトを作成しても、何らかの理由でそのメンバをnull以外にすると、プロパティグリッド自体がクラッシュします。
何が起こっていますか?これはコントロールコードのエラーですか、それとも間違っていますか?それを修正する正しい方法は何ですか?