WPF 增加合计一栏
占坑中 先抛个参考链接
http://stackoverflow.com/questions/678690/how-can-i-create-a-group-footer-in-a-wpf-listview-gridview
以下例子是在listview后面增加合计一栏,但是又是已分组为基础的。下面我慢慢抛代码。也是自己在网上自己找的例子。下面是我具体实现的功能。如下:
前台页面定义CollectionViewSource,其中OrderNum是值以下分组合计是以订单号为分组条件。
<CollectionViewSource x:Key="orderViewSource"> <CollectionViewSource.GroupDescriptions> <PropertyGroupDescription PropertyName="OrderNum" /> </CollectionViewSource.GroupDescriptions> </CollectionViewSource>
结果如下:
我是以订单号作为分组条件,单后得到订单号一样的单子的货品金额合计和订货数量合计。
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<DockPanel>
<Grid DockPanel.Dock="Bottom">
<Grid.Resources>
<local:TotalslSumConverter x:Key="sumslConverter" />
<local:TotaljeSumConverter x:Key="sumjeConverter" />
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="货品金额总计: " HorizontalAlignment="Right" FontWeight="Bold"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="订货数量总计: " HorizontalAlignment="Right" FontWeight="Bold"/>
<TextBlock Grid.Row="0" Grid.Column="1" HorizontalAlignment="Right" Text="{Binding Path=Items, Converter={StaticResource sumjeConverter}}" Width="55" />
<TextBlock Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right" Text="{Binding Path=Items, Converter={StaticResource sumslConverter}}" Width="55" />
</Grid>
<ItemsPresenter />
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
加入listview.groupstyle之后就是具体实现两个接口,sumjeConverter实现计算货品金额总和。sumslConverter实现计算订货数量总和。
public class TotaljeSumConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var users = value as IEnumerable<object>; if (users == null) return "0.00"; decimal sum = 0; foreach (var u in users) { sum = sum + ((OrderGoodsInfo)u).JE; } return sum.ToString("c"); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new System.NotImplementedException(); } }
。
好了,我们可以更改CollectionViewSource中分组条件,例如是以基本单位为分组条件。那么修改CollectionViewSource,如下:
<CollectionViewSource x:Key="orderViewSource"> <CollectionViewSource.GroupDescriptions> <PropertyGroupDescription PropertyName="JBDW" /> </CollectionViewSource.GroupDescriptions> </CollectionViewSource>
结果如下:

浙公网安备 33010602011771号