我正在尝试创建一个 DataGrid,它将有一行作为列标题,然后再有 10 行,每列都填充有组合框。例如:
<DataGrid AutoGenerateColumns="False"
Name="dataGrid1">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Products"
SelectedValueBinding="{Binding ProductName}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=ProductNamesList,
RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=ProductNamesList,
RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
<DataGridComboBoxColumn Header="Amount" />
<DataGridComboBoxColumn Header="Units" />
</DataGrid.Columns>
</DataGrid>
现在,我需要 10 行 3 个组合框。我试过用谷歌搜索它,但我的 Google-Fu 让我失望了,因为我发现告诉我将行绑定到一个列表。我想要的可能吗?还是我应该找到另一种方式?
编辑 1
我想问的是,一旦我有了这个,我怎样才能填充 10 行 3 个组合框?每列将在框中具有相同的项目。
编辑 2
我进行了编辑以表明我已经添加了 Jim 的代码。但是,如果我创建一个ProductNamesList
,并用 10 个项目填充它,并将它绑定到我的列,我会得到 10 行空框。
编辑 3
这是List<string>
:
var ProductNamesList = new List<string>();
var test1 = "test1";
var test2 = "test2";
var test3 = "test3";
var test4 = "test4";
var test5 = "test5";
var test6 = "test6";
var test7 = "test7";
var test8 = "test8";
var test9 = "test9";
var test10 = "test10";
ProductNamesList.Add(test1);
ProductNamesList.Add(test2);
ProductNamesList.Add(test3);
ProductNamesList.Add(test4);
ProductNamesList.Add(test5);
ProductNamesList.Add(test6);
ProductNamesList.Add(test7);
ProductNamesList.Add(test8);
ProductNamesList.Add(test9);
ProductNamesList.Add(test10);
grid1.ItemsSource = ProductNamesList;