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>

结果如下:

 

posted @ 2016-06-30 09:31  文洁丫头  阅读(681)  评论(0编辑  收藏  举报