0

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

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

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。

4

2 回答 2

1

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

于 2011-09-19T15:04:38.443 回答
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>
于 2011-09-19T15:05:37.527 回答