2012-02-14 10 views
1

私は自分のWPF DataGridの内部にコンボボックスを持っています。ComboBoxが選択した値を失う

<DataGridTemplateColumn Header="Account"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Path=Account, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <ComboBox ItemsSource="{DynamicResource Accounts}" SelectedValue="{Binding Path=Account, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="23" IsTextSearchEnabled="True"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
</DataGridTemplateColumn> 

このデータグリッドのDataContextはObservableCollectionです。 Transactionクラスには「Account」というプロパティがあります。以下はこのプロパティの作成方法です。

public string Account 
{ 
    get { return account; } 
    set { account = value; NotifyPropertyChanged("Account"); } 
} 

私はここで間違っていますか?コンボボックスからアイテムを選択すると、ボックスの外側をクリックしても何も表示されません。アカウントプロパティのSetメソッドでブレークポイントを設定すると、値はnullになります。

答えて

3

問題が修正されました。私はTextプロパティバインディングを設定しなければなりませんでした。

<DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <ComboBox ItemsSource="{DynamicResource Accounts}" Text="{Binding Path=Account}" Height="23" IsTextSearchEnabled="True"/> 
    </DataTemplate> 
</DataGridTemplateColumn.CellEditingTemplate> 
1

SelectedValueComboBoxからSelectedItemに変更してください。 MSDNの2つの違いを読んでください。

+0

これをSelectedItemに変更してもまだ動作していません。問題は、違いなく同じままです。代わりにTextBlockのバインディングで何か変更する必要がありますか? –

関連する問題