C# 如何将对象的列表属性绑定到wpf datagridview中的ComboBoxColumn?
我下面有一个物体。我有一个叫做sourceListofData的列表C# 如何将对象的列表属性绑定到wpf datagridview中的ComboBoxColumn?,c#,wpf,xaml,datagridview,combobox,C#,Wpf,Xaml,Datagridview,Combobox,我下面有一个物体。我有一个叫做sourceListofData的列表 public class StringWrapper { public string Value { get; set; } public int ID { get; set; } public string Name { get; set; } public List<string> options{ get; set; }
public class StringWrapper
{
public string Value { get; set; }
public int ID { get; set; }
public string Name { get; set; }
public List<string> options{ get; set; }
public StringWrapper(string val)
{
this.Value = val;
this.Name = val;
options = new List<string>();
options.Add("test1");
options.Add("test2");
}
}
公共类StringWrapper
{
公共字符串值{get;set;}
公共int ID{get;set;}
公共字符串名称{get;set;}
公共列表选项{get;set;}
公共字符串包装器(字符串val)
{
这个值=val;
this.Name=val;
选项=新列表();
选项。添加(“测试1”);
选项。添加(“测试2”);
}
}
我的目标是有一个文本列和一个组合框列。“文本”列显示值,“组合框”列将具有组合框,可以在其中将源链接到“选项”属性
以下是我如何在xaml中设置文本框:
<DataGrid
AutoGenerateColumns="False" ColumnWidth="*"
CanUserReorderColumns="False"
HorizontalAlignment="Left"
Margin="12,161,0,116"
Name="dgEditConfig" Width="685"
ItemsSource="{Binding sourceListOfData}"
AlternatingRowBackground="#CFFA893D" IsReadOnly="True" HeadersVisibility="Column">
<DataGrid.Columns>
<DataGridTextColumn Header="Table Columns" Binding="{Binding Value}"/>
我的想法是,我应该只指向StringWrapper的属性,它应该能够确定组合框项,如下所示:
<DataGridComboBoxColumn ItemsSource="{Binding sourceListOfData}"
DisplayMemberPath="Name"
SelectedValuePath="ID"
SelectedValueBinding="{Binding options }" />
但无论我做了什么样的路径变化,我甚至都看不到datagridview上显示一个组合框。我看到textboxcolumn很好。我做错了什么 列的DataContext将是DataGrid的ItemsSource中的单个项。我猜您将有一个对象列表,希望用作ComboBox的ItemsSource,因此您需要使用RelativeSource绑定,以便获得可视化树中较高位置的元素的DataContext
<DataGrid>
<DataGrid.Columns>
<DataGridComboBoxColumn ItemsSource="{Binding options, RelativeSource={RelativeSource AncestorType=DataGrid}"
DisplayMemberPath="Name"
SelectedValuePath="ID"
SelectedValueBinding="{Binding selectedOption}" />
</DataGrid.Columns>
</DataGrid>
默认情况下,我认为DataGridComboBoxColumn将数据显示为文本,并且仅当您选择要编辑的记录时才会更改ComboBox。是否可以尝试进入网格的编辑模式,并查看是否显示组合框?如果您希望一个组合框始终出现,那么您需要使用DataGridTemplateColumn,如