![](/img/trans.png)
[英]C# Populate DataGrid having ComboBox, CheckBox and TextBox
[英]Populate a ComboBox in a DataGrid in C#
如何在DataGrid myDataGrid的Sections字段下,将Combobox
的List<string> Sections
的项目显示为Combobox
框。
List<string> Sections = new List<string> {"C50", "C40", "C30"};
目前,我正在使用以下代码填充myDataGrid中的其余字段。
var data = from row in Building.Columns
select new
{
row.Id,
row.X,
row.Y,
row.StartElevation,
row.EndElevation,
row.FoundationHeight,
Sections = ""
};
myDataGrid.ItemsSource = data;
如果使用AutoGenerateColumns="True"
,则应使用AutoGeneratingColumn
事件( msdn )。
XAML:
<DataGrid x:Name="myDataGrid" ItemsSource="{Binding}"
AutoGenerateColumns="True"
AutoGeneratingColumn="myDataGrid_AutoGeneratingColumn"/>
代码隐藏:
private void myDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "Sections")
{
var cb = new DataGridComboBoxColumn();
cb.Header = "Sections";
cb.ItemsSource = new List<string> { "C50", "C40", "C30" };
cb.SelectedValueBinding = new Binding("Sections");
e.Column = cb;
}
}
AutoGenerateColumns="False"
解决方案:
XAML:
<DataGrid x:Name="myDataGrid" ItemsSource="{Binding}"
AutoGenerateColumns="False"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding Id}" />
<DataGridTextColumn Header="X" Binding="{Binding X}" />
<DataGridTextColumn Header="Y" Binding="{Binding Y}" />
<DataGridTextColumn Header="StartElevation" Binding="{Binding StartElevation}" />
<DataGridTextColumn Header="EndElevation" Binding="{Binding EndElevation}" />
<DataGridTextColumn Header="FoundationHeight" Binding="{Binding FoundationHeight}" />
<DataGridComboBoxColumn x:Name="cbSections" Header="Sections" SelectedItemBinding="{Binding Sections}"/>
</DataGrid.Columns>
</DataGrid>
代码隐藏:
...
{
...
myDataGrid.ItemsSource = data;
cbSections.ItemsSource = new List<string> { "C50", "C40", "C30" };
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.