加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WPF DataGrid ItemsSource问题

发布时间:2020-12-15 04:13:44 所属栏目:百科 来源:网络整理
导读:请让我知道我对 WPF相对较新.我正在创建一个新的ObservableCollection,其类型为我的简单数据类,并将其分配给我的DataGrid的ItemsSource属性.在我进入我的问题之前,这里是代码: XAML: my:DataGrid SelectionMode="Single" SelectionUnit="Cell" Height="113
请让我知道我对 WPF相对较新.我正在创建一个新的ObservableCollection,其类型为我的简单数据类,并将其分配给我的DataGrid的ItemsSource属性.在我进入我的问题之前,这里是代码:

XAML:

<my:DataGrid SelectionMode="Single" SelectionUnit="Cell" Height="113" HorizontalAlignment="Left" Margin="11,22,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()并返回该值.

问题:

所有东西都应该被填充,但是由于一些奇怪的原因,它再次重新创建三个列(名称,值,索引)在填充XAML中创建的那些上 – 反过来最终得到2组相同的数据.我发现这是一种奇怪的行为,因为我发誓我曾经看过人们之前以这种方式绑定他们的网格.

我究竟做错了什么?

编辑

感谢ChrisO的评论,我发现有一个名为“AutoGenerateColumns”的属性需要关闭.好吧,我觉得自己像一个鞋跟.谢谢!

解决方法

只需在DataGrid上将AutoGenerateColumns属性设置为false即可.然后它只会使用您指定的列.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读