我的WPF DataGrid里面有一个组合框。它是这样创建的:
<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"); }
}
我在这里做错了什么?当我从ComboBox中选择一个项目时,单击框外部后没有显示任何内容。当我在Account属性的Set方法中设置断点时,该值为null。
答案 0 :(得分:3)
修正了我的问题。我必须设置Text
属性绑定。
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{DynamicResource Accounts}" Text="{Binding Path=Account}" Height="23" IsTextSearchEnabled="True"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
答案 1 :(得分:1)
将SelectedValue
中的ComboBox
更改为SelectedItem
。请阅读MSDN上两者之间的差异。