重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

WPFのListBoxについて1から勉強をしているものです。

・項目 削除(CheckBox),ID(TextBlock),カテゴリ(TextBlock),画像(BitmapImage)を一行とするリストを追加、編集、削除できる。
・ID、カテゴリにそれぞれボタン機能を有し、押下することにより各項目に対してソート(昇順⇔降順)できる。
・追加ボタン⇒追加画面を起動し各項目を入力しリストに行を追加する。
・編集ボタン⇒選択中のリストに対して別で編集画面を表示させ選択中のリストの編集を行える。
・削除のチェックがついている行を全て削除する。

このような仕様の画面を作っています。

現在、追加画面からの行の追加はできるようになりました。

しかし残り仕様を満たす解決策が分からず
ネットで調べたところ単一項目のケースでの編集、削除、ソートはよく見かけるのですが。
今回の様にリストに複数項目がある状態からの編集、削除、ソートの事例が見つからず困っています。


ListBoxでやる必要ないのでは?と思われる方もいらっしゃると思いますが。

お聞きしたいことというのは、

ListBoxで選択行のテキストブロックの情報を取れるのかどうか。
ListBoxで削除(CheckBox)がついている行を特定できるのかどうか。
ListBoxで特定の項目に対するソートができるのかどうか。

以上の3点になります。

■使用ツール
Microsoft Visual Studio 2010
■使用テンプレート
WPFアプリケーション Visual C#


その他、不足な情報等ございましたらなんなりと申しつけ下さい。
皆様のお知恵を参考にさせていただけたらと思っております。

よろしくお願いいたします。

A 回答 (1件)

とりあえず,Data BindとTemplateを使っている前提で。



項目の内容をクラスにし,さらにそのコレクションをListBoxのItemsSourceとしてバインドし,
・ListBoxのSelectedItemにクラスをバインド (TwoWay or OneWayToSource) → 選択中のアイテムの取得
・削除マーク用のBooleanのプロパティをCheckBoxにバインドしておく → チェックボックスの状態の取得
・バインドされたコレクションをソートして,INotifyCollectionChanged.CollectionChangedイベントを発生させる → ソート
で,全部できるはずです。
    • good
    • 0
この回答へのお礼

全て出来ました!ありがとうございました。

お礼日時:2011/07/28 16:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!