【解決方法】VB.NET で監視可能なコレクションによって 2 つのリストをリンクするにはどうすればよいですか?


こんにちは、みんな

ここには 3 つのフィールドを持つ listORG があります。

エチュード 、名前
———————————-
1 エチュード 1 ジョン
2 エチュード 2 ジョン
3 エチュード 3 ジョン
4 研究 4 ジョン
5 エチュード 5 メリー
6 エチュード6 メリー
7 エチュード 7 ジョン
8 エチュード 8 ジョン
9 エチュード 9 メリー

ここには listHowMany があります:

Idx、名前、HowManyEtudes
———————————————-
1ヨハネ6
2 メリー 2

ご覧のとおり、2 番目のリストは、ジョンとメリーという人物の練習曲の数を示しています。

そこで、これをObservable Collectionでプログラミングしたいと思います。 これらのリストのいずれかを更新したいので、もう一方も更新します。 新規追加、削除、編集など。

これについて手伝ってくれませんか?

私が試したこと:

実際にインターネットからいくつかのコードを試してみましたが、うまくいきませんでした。

解決策 1

ここで、あなたがやりたいことには問題があります。2 つの異なるリストに対して 1 つの ObservableCollection を使用することはできません。また、両方のすべての項目を弱い型指定の ObservableCollection に入れて、それにアクセスするときに適切にキャストすることはできますが、そうではありません。これは個別のコレクションを持つのと同じで、コードがはるかに複雑になり、読み取りや保守が困難になります。

2 つの ObservableCollection を使用することもでき、それはかなりうまく機能しますが、その場合でも、コレクションが追加、削除、並べ替え操作によって変更された場合にのみイベントが発生します。 コレクション内のアイテムのメンバーが変更された場合、イベントは取得されません。 myObservableCollection(0).Name = "New name" イベントは生成されません。

解決策 2

を使用します。 CollectionViewSource そしてグループ化を使用します。 を使用していると思います WPF。 以下にサンプルを示します。 方法: XAML でビューを使用してデータを並べ替えおよびグループ化する – WPF .NET Framework | Microsoft Learn[^]。

でできることをさらにいくつか紹介します。 CollectionViewSource: コレクションビューソース | WPF について知っておくべき 2,000 の事柄[^]

コードのみを使用した例を次に示します。 2 つ以上のプロパティに基づくグループ化[^]

コメント

タイトルとURLをコピーしました