如何在WPF中创建带有DataGrid下拉列表的组合框?
我试图在WPF中装配一个带有Datagrid下拉列表的组合框。我需要代码以编程方式完成并包含在codebehind中 以下是到目前为止我得到的信息:如何在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
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来执行此操作?我正在运行时创建组合框。