2012-03-02 14 views
0

私はWPFデータグリッドを観測可能なコレクションにバインドしており、これは意図したとおりに動作しています。私が今やろうとしています何WPFのデータグリッドのプロパティにテキストをバインドする適切な方法は何ですか?

は言って、その下にテキストを追加さ​​れます。「選択した行の数:{カウントがここに入る}

これを行うための適切な方法は何ですか?私はSelectedCountと呼ばれる新しいモデルをView Modelに追加することもできますが、それに似ていてバインドすることもできますが、それは正しくはありません。それは冗長なようだ。また、ラベルのテキストをコードの後ろに動的に設定することもできますが、これが正しいかどうかはわかりません。

以下に例を示します。

EDIT:

その意図すべての機能をオフ/チェックを提供することで、チェックボックスの列ヘッダがありますふりをしてください。このヘッダーチェックボックスの状態は、最終的なカウントにはカウントしないでください。

example

答えて

1

あなたは宣言XAMLでSelectedItems.Countプロパティにバインドするバインディング要素を使用することができます。

<TextBlock Text="{Binding ElementName=MyDataGrid, 
    Path=SelectedItems.Count, StringFormat=Number of selected rows: {0}}" /> 

更新

おそらくあなたはとてもSelectedXCountプロパティを追加し、MVVMを使用していますあなたのビューモデルには、ビューモデルの完全に合理的なアプリケーションです。ビューモデルでの利点は、選択した項目の数に基づいて単位テストを行うことができることです。例えば。ユーザがいくつかの項目を選択した場合に、ユーザが進めることができることを確認したい場合は(CanNextプロパティはtrueを返します)。

SelectedItemsプロパティはDependencyPropertyではありません。したがって、バインドすることはできませんが、MVVMでDataGridを使用する際に問題を回避するオンラインの記事が多数あります。ほとんどのソリューションでは、DataGridのSelectionChangedイベントの呼び出し時にビューモデルコマンドを呼び出すためのメカニズムを使用します。

+0

Yikes。私は質問にもこれを持っていたはずです。チェックボックスヘッダーもあります(すべてを選択する/選択していないすべて)。選択したアイテムがこれを壊すことになると数えます – jglouie

+0

回答が更新されました。 – devdigital

+0

非常に良い、ありがとう – jglouie

関連する問題