【问题标题】:Issue when dynamically binding to a datagrid动态绑定到数据网格时的问题
【发布时间】:2011-09-19 15:00:36
【问题描述】:

好的,我有一个奇怪的小问题,希望有人能帮助我。

为了设置场景,我首先有一个对象:

public class Date
{
    public DateTime _WeekDate;
    public ICollectionView _WeekData;
}

我有一个显示日期对象列表的组合框。

<ComboBox Name="cbPickupDate" ItemsSource="{Binding Path=PickupDates}" DisplayMemberPath="WeekDate" />

好的,现在我使用所选日期对象的集合来为我的数据网格提供 itemssource:

<my:DataGrid ItemsSource="{Binding ElementName=cbPickupDate, Path=SelectedItem.WeekData}">
    <my:DataGrid.Columns>
        <my:DataGridTextColumn Binding="{Binding Path=ReqID}" Header="Request ID" />
        <my:DataGridTextColumn Binding="{Binding Path=LineID}" Header="Line ID" />
        <my:DataGridTextColumn Binding="{Binding Path=OrderID}" Header="Order ID" />
    </my:DataGrid.Columns>
</my:DataGrid>

这一切都很好,因为我从组合框中选择了不同的选项,数据网格改变了它的项目源。

但是,数据网格为我的 WeekData 项目中的每个值添加了一个额外的列,并在我指定的值之上。因此,使用我展示的示例,它将显示 3 列 reqID、lineID 和 OrderID 以及另外 3 列完全相同的内容,因此总共 6 个。

感谢您的帮助,我真的为这个而摸不着头脑。

提前致谢, SumGuy。

【问题讨论】:

  • 我假设你有 autogeneratecolumns=false :)
  • 天哪,亲爱的,当您知道如何操作时,一切都变得非常简单。这确实是问题,谢谢。

标签: c# wpf data-binding datagrid itemsource


【解决方案1】:

关闭AutoGenerateColumns

<my:DataGrid ItemsSource="{Binding ElementName=cbPickupDate, Path=SelectedItem.WeekData}"
             AutoGenerateColumns="False">
    <my:DataGrid.Columns>
        <my:DataGridTextColumn Binding="{Binding Path=ReqID}" Header="Request ID" />
        <my:DataGridTextColumn Binding="{Binding Path=LineID}" Header="Line ID" />
        <my:DataGridTextColumn Binding="{Binding Path=OrderID}" Header="Order ID" />
    </my:DataGrid.Columns>
</my:DataGrid>

【讨论】:

    【解决方案2】:

    您是否尝试将 DataGrid 的属性 AutoGenerateColumns 设置为 false?我认为这将解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-23
      • 2011-08-05
      • 1970-01-01
      • 2013-11-14
      • 2011-11-16
      • 2017-09-26
      • 1970-01-01
      • 2014-08-25
      相关资源
      最近更新 更多