我有一个带有组合框的 DataGrid
<DataGridComboBoxColumn Header="Header 2" ItemsSource="{Binding Pet}">
基于 MVVM 模式的项目。当我尝试在 TextColumn 上显示数据时,它可以工作
<DataGridTextColumn Header="Header 1" Binding="{Binding ID}" />
但是,我不知道如何为 DataGridComboBoxColumn 绑定(bind)数据。
型号代码:
public string ID
{
get { return _id; }
set { _id = value; NotifyPropertyChanged("ID"); }
}
public string[] Pet
{
get { return _pet; }
set { _pet = value; NotifyPropertyChanged("Pet"); }
}
最佳答案
而不是使用 <DataGridComboBoxColumn>
尝试使用 <DataGridTemplateColumn>
像这样
<DataGridTemplateColumn Header="ID">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.Pet, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" SelectedItem="{Binding ID}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
在此示例中,我将 Combobox 的项目源绑定(bind)为当前 ViewModel 中定义的 Pet 数组集合,并将所选项目绑定(bind)为绑定(bind)到完整 DataGrid 的 List<> 集合的 ID 属性。
关于c# - 如何为 DataGridComboBoxColumn WPF 绑定(bind)数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21550451/