C# 了解绑定DataGridComboxColumn项源并选择EdItem
我不理解到DataGridComboxColumn的绑定是如何正确工作的。 My DataGrid TextColum显示我的行条目中的值,但ComboBoxColumn未填充 我有一个名为RowEntries的RowEntryView的ObservableCollection,它派生自:C# 了解绑定DataGridComboxColumn项源并选择EdItem,c#,wpf,datagrid,combobox,C#,Wpf,Datagrid,Combobox,我不理解到DataGridComboxColumn的绑定是如何正确工作的。 My DataGrid TextColum显示我的行条目中的值,但ComboBoxColumn未填充 我有一个名为RowEntries的RowEntryView的ObservableCollection,它派生自: public class DataTypes : RowEntryView { private string _value; public string[] ValuesPossible {g
public class DataTypes : RowEntryView
{
private string _value;
public string[] ValuesPossible {get; set; }
public string Value
{
get
{
return _value;
}
set
{
_value = value;
OnPropertyChanged(new PropertyChangedEventArgs("Value"));
}
}
}
My DatagridTextColum显示值变量。我的DataGridComboBox列为空。可能的值用{“A”、“B”、“C”}填充,值用“A”填充
项目源是您希望显示的项目列表。SelectedItem(非selectedItemBinding)是您选择的对象。基本上,您需要有SelectedItem=“{Binding Value}”。 现在,为了能够将每个新选择的更改通知给datacontext,您的对象必须实现INotifyPropertyChanged,然后您的绑定将变为: SelectedItem=“{Binding Value,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}”。
你会在网上找到很多例子。然后我建议使用DataGridTemplateColumn:
<DataGridTemplateColumn Header="Type">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding ValuesPossible}"
SelectedItem="{Binding Value, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
感谢您的回答:SelectedItem在DataGridComboxColum上不可用,INotifychanged在RowEntryView中实现
<DataGridTemplateColumn Header="Type">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding ValuesPossible}"
SelectedItem="{Binding Value, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>