C# 如何将对象的列表属性绑定到wpf datagridview中的ComboBoxColumn?

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; }

我下面有一个物体。我有一个叫做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 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,如