2012-04-18 10 views
0

私のアプリケーションでは、いくつかのテキストブロックとチェックボックスを持つItemTemplateのデータテンプレートを持つリストボックスがあります。 私はこのアプリを使ってExcelシートを読み込み、その内容を読んでリストボックスに追加します(目的はテキストブロックを作成してイベントのチェックボックスを作成することです)。データテンプレートとリストボックス

私の最初のアイデアは、DataGridを使用することでしたが、シートを読んでいるときに、チェックボックス(各CBの1つのイベント)のイベントを作成する必要がありましたが、DataGridでできませんでした。 次に、ItemTemplateのデータテンプレートを使用してリストボックスオプションに行きました。しかし、私はContentPresenterを使用しているときに "null"の問題オブジェクトに固執していました(リストボックスのアイテムはWPFのいくつかのバグではないので読みました)。

これを「自動化する」別の方法がありますか?または、各テキストブロックとチェックボックスを作成する必要がありますか?

ありがとうございます! (悪い英語には申し訳ありません)

答えて

1

これを実装する正統な方法は、表示する各項目を表すビューモデルオブジェクトを作成することです。このビューモデルには、データを保持するboolプロパティと文字列プロパティが含まれている可能性があります。エクセルシートを解析する際には、各エントリについて、ビューモデルのインスタンスを作成し、そのデータをリストに追加します。

すべてのエクセルデータを読み終えたら、あなたのデータのプレゼンテーション。まず、ビューモデルオブジェクトのDataTemplateを宣言します。このDataTemplateで、boolにチェックボックスをバインドし、文字列にテキストブロック/ラベルをバインドします。次に、ListBoxを宣言し、ビューモデルリストインスタンスをListBox.ItemsSourceにバインドします。すべてを正しく実行した場合は、各行にチェックボックスと説明を含むリストボックスが表示されます。

注:ユーザーがビューモデルのデータを変更できるようにするには、ビューモデルオブジェクトにINotifyPropertyChangedを実装し、DataTemplateでTwoWayバインディングを使用するようにしてください。