0

DataGrid文字列のリストからステータス値をDataGridComboBoxColumnに入力したいと思います。

XAMLは次のようになります

<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;

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

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

4

1 に答える 1

0

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

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

于 2011-12-20T08:36:39.667 に答える