[英]WPF DataGrid ItemsSource Issue
请让我知道我对WPF相对较新。 我正在创建一个新的ObservableCollection
,其类型为我的简单数据类,并将其分配给我的DataGrid
的ItemsSource
属性。 在我进入我的问题之前,这里是代码:
XAML :
<my:DataGrid SelectionMode="Single" SelectionUnit="Cell" Height="113" HorizontalAlignment="Left" Margin="11,22,0,0" Name="addressGrid" VerticalAlignment="Top" Width="213" Background="#FFE2E2E2" AlternatingRowBackground="#FFA4CFF2" BorderBrush="#FF7C7C7C" HorizontalGridLinesBrush="White" PreviewKeyDown="addressGrid_PreviewKeyDown" CellEditEnding="addressGrid_CellEditEnding" BeginningEdit="addressGrid_BeginningEdit" PreparingCellForEdit="addressGrid_PreparingCellForEdit">
<my:DataGrid.Columns>
<my:DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name}"></my:DataGridTextColumn>
<my:DataGridTextColumn Header="Value" Width="3*" Binding="{Binding Path=Value}"></my:DataGridTextColumn>
<my:DataGridTextColumn Header="Index" Visibility="Hidden" Binding="{Binding Path=Index}"></my:DataGridTextColumn>
</my:DataGrid.Columns>
</my:DataGrid>
数据类 :
public class PropertyFields
{
public string Name { get; set; }
public object Value { get; set; }
public int Index { get; set; }
}
人口 :
ObservableCollection<PropertyFields> propertyList = new ObservableCollection<PropertyFields>();
for (int i = 0; i < m_pFields.FieldCount - 1; ++i)
{
propertyList.Add(new PropertyFields() {Name = m_pFields.Field[i].AliasName, Value = DisplayedValueForRow(i), Index = i});
}
// Set ItemSource to populate grid
addressGrid.ItemsSource = propertyList;
有关人口方法的更多信息:
我正在使用ArcGIS框架构建此解决方案,因此有些东西不是“系统”。
m_pFields
是一个IFields
接口对象,允许我存储空间层信息
IFields
有一个FieldCount
属性,它返回集合中的许多字段
DisplayedValueForRow(i)
调用另一个ArcGIS obj方法IPropertySet.GetProperty()
并返回该值。
问题:
一切都被填充,因为它应该的,但对于一些奇怪的原因,它被再次重新创建三列(名称,值指数)ON填充在XAML中创建的顶部 -反过来结束了2套的相同的数据。 我发现这是一种奇怪的行为,因为我发誓我曾经看到人们之前以这种方式绑定他们的网格。
我究竟做错了什么?
感谢ChrisO的评论,我发现有一个名为“AutoGenerateColumns”的属性需要关闭。 好吧,我觉得自己像一个鞋跟。 谢谢!
只需在DataGrid
上将AutoGenerateColumns
属性设置为false即可。 然后它只会使用您指定的列。
只需将其AutoGenerateColumns
设置为False
。 默认情况下为True
。
如果要显示班级的所有字段。 不要在XAML中设置任何列。
但是,如果要显示选择性列,则将AutoGenerateColumns
设置为false并在XAML中写入单个列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.