如何在WPF中创建带有DataGrid下拉列表的组合框?

如何在WPF中创建带有DataGrid下拉列表的组合框?,wpf,vb.net,user-interface,datagrid,combobox,Wpf,Vb.net,User Interface,Datagrid,Combobox,我试图在WPF中装配一个带有Datagrid下拉列表的组合框。我需要代码以编程方式完成并包含在codebehind中 以下是到目前为止我得到的信息: Dim cb As New ComboBox Dim dg As New DataGrid dg.AutoGenerateColumns = False

我试图在WPF中装配一个带有Datagrid下拉列表的组合框。我需要代码以编程方式完成并包含在codebehind中

以下是到目前为止我得到的信息:

                        Dim cb As New ComboBox
                        Dim dg As New DataGrid

                        dg.AutoGenerateColumns = False

                        dg.ItemsSource = clnObjects 

                        Dim col_name As New DataGridTextColumn
                        col_name.Header = "Name"
                        col_name.Binding = New Binding("Name")
                        col_name.CanUserSort = False
                        col_name.CanUserResize = False

                        dg.Columns.Add(col_name)

                        Dim col_startdate As New DataGridTextColumn
                        col_startdate.Header = "Start Date"
                        col_startdate.Binding = New Binding("StartDate")
                        col_startdate.CanUserSort = False
                        col_startdate.CanUserResize = False

                        dg.Columns.Add(col_startdate)

                        cb.Items.Add(dg)
这段代码生成一个组合框,其中包含一个具有两列的DataGrid,看起来很不错。尽管当您单击组合框并选择DataGrid中的一行时,组合框中的选择无法正常工作。(它只显示列标题。) 我希望所选行的第一列中的值显示为组合框选择

如果有人能帮我解决这个问题,我将不胜感激

谢谢


Mike

听起来您希望您的
组合框
包含
clnObjects
中的项目,但是使用
数据网格
而不是默认的
堆栈面板
来显示下拉列表

现在,您的
组合框中充满了
DataGrid
控件,而不是
clnObjects
中的任何对象。这意味着当您选择一个项目时,您选择的是一个
DataGrid
,而不是
DataGrid。SelectedItem

您可以尝试更改它,使组合框的显示文本包含
ComboBox.SelectedItem.SelectedItem
其中第一个
SelectedItem
是数据网格,但是我仍然觉得这是一个糟糕的设计,因为您需要为每个
ComboBoxItem
创建一个新的
DataGrid
对象

相反,我建议覆盖默认的
ComboBox.Template
,以在
DataGrid
中显示组合框项,而不是在默认的堆栈面板中。可以找到默认的组合框模板。只需将其复制并将StackPanel替换为数据网格中的
IsItemsHost=“True”



为什么不能使用XAML来执行此操作?我正在运行时创建组合框。