我目前正在C#WPF中学习数据绑定,我正在尝试设置ItemsSource
的{{1}}属性。
我有课程材料:
DataGridComboBoxColumn
还有一个Datagrid:
public class Material {
public static List<Material> loadedMaterials;
static Material() {
loadedMaterials = new List<Material>();
loadedMaterials.Add(new Material("TEST1", "", ""));
loadedMaterials.Add(new Material("TEST2", "", ""));
loadedMaterials.Add(new Material("TEST3", "", ""));
}
public string name { get; set; }
public string name2 { get; set; }
public string name3 { get; set; }
public Material(string n, string n2, string n3) {
name = n;
name2 = n2;
name3 = n3;
}
}
<DataGrid x:Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="false">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Name" SelectedItemBinding="{Binding name}"/>
</DataGrid.Columns>
</DataGrid>
已经可以使用,但是现在我正在尝试设置SelectedItemBinding
。
我想要存储在loadMaterials中的材料的所有名称。
我尝试了以下操作:
ItemsSource
但是下拉列表使用的列表不是获取所有名称的列表,而是第一个“材质”名称具有的每个字符。 (“ T”,“ E”,“ S”,“ T”,“ 1”)
是否有办法从所有//K Refers to The Namespace the Material-Class is in
ItemsSource="{Binding Source={x:Static K:Material.loadedMaterials}, Path=name}
中获取所有name
,还是我必须创建一个额外的List才能实现?
答案 0 :(得分:1)
从ItemsSource中删除, Path=name
部分。该代码绑定到第一个字符串,将其视为字符数组。
要显示材料的名称,请设置DisplayMemberPath 列中的“名称”或 为DataGridComboBoxColumn创建一个ItemTemplate:
<DataGridComboBoxColumn.CellStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding name}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridComboBoxColumn.CellStyle>