【发布时间】:2019-07-13 12:52:55
【问题描述】:
以下场景 (我为这个例子做了很大的简化):
我有一个组列表。 每个组都分配有数量的元素。
这是我的 ViewModel 中的列表:
public List<Group> Groups { get; set; }
这些是我的模型:
public class Group
{
public int GroupId { get; set; }
public string Name { get; set; }
public Element MainElement { get; set; }
}
public class Element
{
public int ElementId { get; set; }
public int GroupId { get; set; }
public string Name { get; set; }
public double Amount { get; set; }
}
这是 ListView 的样子:
<ListView ItemsSource="{Binding Groups}>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Name}" />
<TextBlock Grid.Column="1" Text="{Binding GroupId}" />
<TextBlock Grid.Column="2" Text="{Binding SumOfAllItemsInThisGroup}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
整个 UWP 应用运行良好,但我想在列表中显示该组中所有元素的总和。
我不想将值保存在数据库中。 还是我必须这样做?
我尝试过类似的方法:
var myGroups = new SuperGroup
{
Group = group,
Amount = db.Elements.Where(e => e.Group == group).Select(e => e.Amount).Sum()
};
public class SuperGroup
{
public Group Group { get; set; }
public double SumAmount { get; set; }
}
并将绑定更改为Text="{Binding Group.*}"
但不幸的是没有显示更多的值
有没有办法使用转换器?
或者你有一个非常简单的解决方案吗?
【问题讨论】: