2011-12-19 9 views
0

DataGridのDataGridComboBoxColumnにstatusという文字列のリストの値を設定したいとします。 XAMLは、このDataGridComboBoxColumnは値のリストを表示しません

<DataGridComboBoxColumn Header="Status" > 
    <DataGridComboBoxColumn.ElementStyle> 
    <Style TargetType="ComboBox"> 
     <Setter Property="ItemsSource" Value="{Binding}" /> 
    </Style> 
    </DataGridComboBoxColumn.ElementStyle> 
</DataGridComboBoxColumn> 

のように見えます

文字列のためのコードは、グリッドデータは、クラスのオブジェクトのリストである、単純なジェネリックリスト

var lstStrings = new List<string>(); 
lstStrings.Add("New"); 
lstStrings.Add("Open"); 
lstStrings.Add("ReOpen"); 
lstStrings.Add("Closed"); 

DataGridComboBoxColumn cmbx = grdComments.Columns[1] as DataGridComboBoxColumn; 
cmbx.ItemsSource = lstStrings; 

です。問題は、グリッドデータのステータス列の値がデフォルトで空白(既に保存されている値を表示していない)です。セルをクリックすると値とともにコンボが表示されますが、値を選択すると表示されません。

私の説明が十分明確であることを願っています。

+0

この質問の可能なダナリスト:http://stackoverflow.com/q/8346869/920384 – punker76

+0

この例ではコードはありませんので、xamlだけでドットを接続することはできません – CodeMe

+0

もっとコードを見ずには分かりませんあなたの 'MyClass.Status'が文字列でないか、バインディングが正しくないと推測しています。どの時点でComboBoxがDataItemにバインドされていますか? XAMLではどこにも表示されません。あなたはそれをItemsSourceで満たしていますか?私はあなたが 'ItemsSource'のバインディングを持っているので混乱しています。コードビハインドでそれを設定しているようです。 – Rachel

答えて

0

データバインディングを使用するには、XAMLアイテムをクラスのパブリックプロパティにバインドする必要があります。 与えているコード例では、ローカル変数にバインドしようとしているようです。

ObservableCollection型を使用してクラスにINotifyPropertyChangedインターフェイスを実装することをお勧めします。コードで行われたリストへの変更は自動的にビューで更新されます。

+0

私は人口は一度だけに設定されますリスト私はちょうどいくつかの静的な値のクラスを作る必要がありますか?コンボ値がコンボに表示されることに加えて、唯一の問題は選択にあります – CodeMe

関連する問題