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

发布于 2024-12-05 17:48:26 字数 1073 浏览 0 评论 0原文

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

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

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

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

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

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

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

感谢任何帮助,我真的对这个问题摸不着头脑。

提前致谢, 苏姆盖伊。

OK I have a weird little issue I hope someone can help me with.

To set the scene, I first of all have an object:

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

I have a combobox which displays a list of the Date objects.

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

OK, now I take the selected date object's collection to provide an itemssource for my datagrid:

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

This all works very nicely, as I choose different options from the combobox the datagrid changes it's itemssource.

However, the datagrid adds an extra column for each value within my WeekData item on top of the ones I have specified. So using the example I've shown it would display 3 columns of reqID, lineID and OrderID and 3 more columns of exactly the same thing, so 6 in total.

Any help is appreciated, I'm really scratching my head over this one.

Thanks in advance,
SumGuy.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

这样的小城市 2024-12-12 17:48:26

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

Turn off 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>
伪装你 2024-12-12 17:48:26

Have you tried to set the property AutoGenerateColumns of your DataGrid to false? I think that will solve your problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文