动态绑定到数据网格时出现问题

时间:2011-09-19 15:00:36

标签: c# wpf data-binding datagrid itemsource

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

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

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

我有一个组合框,显示Date对象的列表。

<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>

这一切都很好用,因为我从组合框中选择了不同的选项,datagrid改变了它的itemssource。

但是,datagrid会在我指定的WeekData项目中为每个值添加一个额外的列。因此,使用我展示的示例,它将显示3列reqID,lineID和OrderID以及3列完全相同的内容,因此共有6列。

任何帮助都表示赞赏,我真的很想不起这个。

提前致谢, SumGuy。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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>