我想在同一个数据网格上使用两个可观察的集合

问题描述 投票:0回答:1

我正在处理一个项目的报告。我正在创建一份利润报告。在这里,我必须列出销售详情和销售退货详情。它们来自不同的类,因此它们是两个不同的可观察集合。我想首先列出销售详情,在完成销售后列出销售退货。我希望在单个数据网格上完成此操作

我已经尝试使用数据网格名称和项目源,但只列出销售回报

AllSalesProfitList = new ObservableCollection<SalesInvoice>(SalesInvoice.GetAllSalesProfitList(SelectQuerySales));

if (AllSalesProfitList.Count > 0)
{
    ReportContainer.Visibility = Visibility.Visible;
    ListSalesReportView.ItemsSource = AllSalesProfitList;

    LabelTotalSalesAmountValue.Content = AllSalesProfitList.Sum(p => p.TotalSalesAmount);
}
else
{
    NoRecordCheck();
}

AllSalesReturnProfitList = new ObservableCollection<SalesReturnInvoice>(SalesReturnInvoice.GetAllSalesReturnProfitList(SelectQuerySalesReturn));

if (AllSalesReturnProfitList.Count > 0)
{
    ReportContainer.Visibility = Visibility.Visible;
    ListSalesReportView.ItemsSource = AllSalesReturnProfitList;

    LabelTotalSalesReturnAmountValue.Content = AllSalesReturnProfitList.Sum(p => p.TotalSalesReturnAmount);
}
else
{
    NoRecordCheck();
}

预期结果

它应首先列出所有销售,然后列出销售回报。

实际结果

仅列出销售回报。

c# wpf datagrid code-behind
1个回答
0
投票

CompositeCollection是一个可以解决问题的班级。确实如此

允许多个集合和项目显示为单个列表。

所以你的代码会(或多或少)

CompositeCollection compositeCollection = new CompositeCollection();
CollectionContainer cc1 = new CollectionContainer();
cc1.Collection = AllSalesProfitList;
CollectionContainer cc2 = new CollectionContainer();
cc2.Collection = AllSalesReturnProfitList;

compositeCollection.Add(cc1);
compositeCollection.Add(cc2);

ListSalesReportView.ItemsSource = compositeCollection;

我希望它可以帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.