2011-10-27 61 views
2

wpf winアプリケーションでwpf toolkit datagridを使用しています。私のビューモデルでは、データグリッドのitemsourceにバインドされているobservablecollectionプロパティがあります。 学生クラスは名前、年齢、クラスのプロパティを持ち、グリッドの各列に表示されます。WPF Datagrid列ヘッダーを動的に変更します。

私はView Modelクラスに "Header1"というプロパティがあり、それをデータグリッドのテキスト列のヘッダーにどのようにバインドできますか?使用すると、グリッドにヘッダー文字列が表示されません。実行時にこの列ヘッダーを更新する必要があります。私はそれをどのようにすることができますか?私はまた、次の方法で試しました。

<dg:DataGridColumn Header = "{Binding Header1, ElementName=MyUsrCtrl}" /> 

ただし、これも機能しません。私もDataContext.Header1, ElementName=MyUsrCtrlを使用しました...しかし、使用はありません。

どうすれば可能ですか?

+0

あなたのビューモデルクラスのプロパティに結合している場合、なぜあなたはのElementNameを使用していますか? – Zannjaminderson

+1

xamlコードの一部を表示できますか? –

答えて

-1

あなたのコードについてよく知らなくても、私はちょうどこれを刺していますが、ここでは行きます。私はあなたがDataContextを使用して、ビューモデルにあなたの全体のビューをバインドしましたと仮定している、とあなたは、このようなDataGrid何かのためItemsSourceを結合していること:

<dg:DataGrid ItemsSource="{Binding MyCollection}" /> 

それが本当だと仮定すると、あなたは道のほとんどをしていますそこにあなたのヘッダバインディングがあります。バインディングのElementName部分を次のように削除してください:

<dg:DataGridColumn Header = "{Binding Header1}" /> 

これはすべきことです。注目すべきもう1つの点は、ビューモデルがINotifyPropertyChangedを実装し、Header1プロパティの設定ツールがPropertyChangedメソッドを呼び出すことを確認することです。

関連する問題