質問

私は最近、WPFが問題に出くわしました ListView コントロールは、アイテムをソートする能力を制限しているようです。具体的には、私は SortDescription ネストされたプロパティ(プロパティのプロパティ)を認識します。

Propretiesによる簡単な並べ替えの場合、次の行が仕事をする必要があります。

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty",
    ListSortDirection.Ascending));

そして確かにそれは私にとってうまく機能します。ただし、 ItemSource 私のために ListView です(強くタイプ) DataTable, 、いくつかの列は、行のネストされたプロパティにバインドされています(つまり Row.OtherTableRow.SubProperty バインディングパススタイル) - これは、ADO.NETデータセットが階層データベースで機能する方法です。

私がやりたいのはこのようなことです:

listView.Items.SortDescriptions.Add(new SortDescription("MyProperty.SubProperty",
    ListSortDirection.Ascending));

しかし、残念ながらその線はAnを投げます ArgumentException:

「注文」タイプには、「row」という名前のプロパティがありません。[id] 'なので、データ収集をソートできません。

不思議なことに、私はネストされた特性に拘束力のある問題はありません。実際、フィールドは完全によく表示されます ListView... aを追加しません PropertyGroupDescriptionlistView.GroupDescriptions ネストされたプロパティの問題を教えてください - それだけです SortDescriptions!

これは、WPF/の制限です ListView コントロール?フレームワークの一環としてサポートを受ける方法はありますか、それともそこで運がありませんか?残念ながら、この矛盾が避けられない場合、ネストされたプロパティのこのシナリオのハックや回避策を誰かが提案できるかどうか、私は大いに感謝します。私はすでにいくつかのアイデアを試しましたが、すべてが最小限の成功を収めました。

注:ORMが私の問題をうまく解決する可能性があることを認識していますが、これが私が取り組んでいる現在のプロジェクトではまったく実行可能ではないことを恐れています。簡単なADO.NETデータセットが必要です。

役に立ちましたか?

解決

Windows Presention Foundation Elnead(Adam Nathan)によると、デフォルトビューをListCollectionViewにキャストし、CustomsOrtプロパティにカスタムICOMParerの実装を設定できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top