ComboBox不会在DataGridTemplateColumn中显示绑定数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ComboBox不会在DataGridTemplateColumn中显示绑定数据相关的知识,希望对你有一定的参考价值。
我创建了一个自定义DataGrid,其中定义了组合框的列。我试图将itemsource值提供给组合框,但它不会在运行时填充组合框中的数据。这是C#和XAML代码。
public MainWindow()
{
InitializeComponent();
datagrid_additionalinfo.Items.Add(new object());
datagrid_additionalinfo.DataContext = new ComboboxViewModel();
}
public class ComboboxViewModel
{
public List<string> Members { get; set; }
public List<string> Disciplines { get; set; }
public ComboboxViewModel()
{
this.Members = new List<string>
{
"Ali", "Mubashar", "Muffassir", "Nitin"
};
this.Disciplines = new List<string>
{
"Architecture", "Mechanical", "Structure"
};
}
}
<DataGrid Name="datagrid_additionalinfo" Margin="20,0,20,0" IsReadOnly="False" SelectionMode="Single" CanUserAddRows="True" AutoGenerateColumns="False" SelectionUnit="Cell" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Discipline" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="200" ItemsSource="{Binding Disciplines}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Members" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="200" ItemsSource="{Binding Members}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
如果我错过了什么,请纠正我。非常感谢你。
答案
DataGrid列应放在'Columns'标记内:
<DataGrid ...>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Discipline" Width="100" >
...
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Members" Width="100">
...
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
而且,如果您喜欢从代码中填充项目,则不需要使用DataContext,只需编写:
public MainWindow()
{
InitializeComponent();
datagrid_additionalinfo.Items.Add(new ComboboxViewModel());
}
编辑:
如果您更喜欢使用DataContext,请创建一个包含所有项的ViewModel,例如:
public class MainViewModel
{
public List<ComboboxViewModel> Items { get; set; }
public MainViewModel()
{
Items = new List<ComboboxViewModel>() { new ComboboxViewModel()};
}
}
然后在xaml中绑定它:
<DataGrid Name="datagrid_additionalinfo" ItemsSource="{Binding Items}" ...>
并设置DataContext:
public MainWindow()
{
InitializeComponent();
datagrid_additionalinfo.DataContext = new MainViewModel();
}
以上是关于ComboBox不会在DataGridTemplateColumn中显示绑定数据的主要内容,如果未能解决你的问题,请参考以下文章
Winforms:更改分辨率时,ComboBox高度不会调整大小
当 ItemsSource 更改 MVVM 时,Combobox SelectedItem 不会更新
Kendo React ComboBox 不会滚动到键入的值