WPF ListView-ネストされたプロパティによるソート
-
19-09-2019 - |
質問
私は最近、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を追加しません PropertyGroupDescription
に listView.GroupDescriptions
ネストされたプロパティの問題を教えてください - それだけです SortDescriptions
!
これは、WPF/の制限です ListView
コントロール?フレームワークの一環としてサポートを受ける方法はありますか、それともそこで運がありませんか?残念ながら、この矛盾が避けられない場合、ネストされたプロパティのこのシナリオのハックや回避策を誰かが提案できるかどうか、私は大いに感謝します。私はすでにいくつかのアイデアを試しましたが、すべてが最小限の成功を収めました。
注:ORMが私の問題をうまく解決する可能性があることを認識していますが、これが私が取り組んでいる現在のプロジェクトではまったく実行可能ではないことを恐れています。簡単なADO.NETデータセットが必要です。
解決
Windows Presention Foundation Elnead(Adam Nathan)によると、デフォルトビューをListCollectionViewにキャストし、CustomsOrtプロパティにカスタムICOMParerの実装を設定できます。