gpt4 book ai didi

c# - 组合在一起的两个可枚举的数据模板

转载 作者:行者123 更新时间:2023-11-30 15:46:49 26 4
gpt4 key购买 nike

假设我有以下两个类:

public class TestResults
{
public string TestGroup {get; set; }
public string TestName {get; set; }
public bool TestPassed {get; set; }
}

public class TestSummary
{
public string TestGroup {get; set; }
public string SummaryText {get; set; }
}

我的一些测试数据可能是这样的:

TestResults
TestGroup TestName TestPassed
==========================================
Item1 HasPrice True
Item1 HasDiscount True
Item2 HasPrice True
Item2 HasDiscount False

TestSummary
TestGroup SummaryText
=================================================
Item1 SKU: 234 Price: 13.40 Discount: 1.34
Item2 SKU: 345 Pirce: 15.70

如果我有一个 IEnumerable<TestResults>连同 IEnumerable<TestSummary> , 我希望能够在 TestGroup 上将它们组合在一起并像这样显示他们的信息:

______________________________________________________________________
| Item1 _________________________ _______________________________ |
| | Grid of TestResults | | SummaryText for Item1 | |
| |_______________________| |______________________________| |
|_____________________________________________________________________|
______________________________________________________________________
| Item2 _________________________ _______________________________ |
| | Grid of TestResults | | SummaryText for Item2 | |
| |_______________________| |______________________________| |
|_____________________________________________________________________|

我有两个关于如何做到这一点的问题:

  1. 如何加入两个 IEnumerable s 并将它们组合在一起,以便数据模板可以使用它们?
  2. 我的数据模板应该是什么样子才能显示分组数据?

最佳答案

我认为您需要创建一个新类 ItemViewModel,它将包含相应的 TestResults 和 SummaryText 作为您可以绑定(bind)到的属性。比您将能够创建 ItemViewModels 的 IEnumerable 并绑定(bind)您的 ListView(或任何您想要的)。我还建议 Grid of TestResults 最好替换为绑定(bind)到 View 模型的 TestResults 属性的 ListView。

希望对您有所帮助!简要描述 - 如果我的解释不够清楚,请发表评论。

更新:

此代码应填充 View 模型的 IEnumerable:

public class ItemViewModel
{
public IEnumerable<string> TestResults { get; set; }
public string SummaryText { get; set; }
}

...

var viewModels = testResults.Select(tr =>
new ItemViewModel() {
TestResults = testResults.Where(t => t.TestGroup == tr.TestGroup)
.Select(t => t.TestName + " " + t.TestPassed),
SummaryText = testSummaries.First(ts => ts.TestGroup == tr.TestGroup)
});

UPD2:

这个 XAML 应该可以解决问题:

<!-- In your resources -->
<DataTemplate x:Key="ItemViewModelTemplate">
<StackPanel Orientation="Horizontal">
<ListView ItemsSource={Binding TestResults} />
<TextBlock Text={Binding SummaryText} />
</StackPanel>
</DataTemplate>

...

<!-- In your main xaml file -->
<!-- Let's assume that your main VM contains property ViewModels
that is filled like described above -->
<ListView ItemsSource={Binding ViewModels}
ItemTemplate="{StaticResource ItemViewModelTemplate}" />

关于c# - 组合在一起的两个可枚举的数据模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com