WPF TotalSummary汇总栏设置鼠标点击事件和显示格式修改

本文介绍了在WPF中使用DevExpressGridControl时,如何设置SummaryPanel和FixedSummaryPanel来展示汇总信息,以及如何通过DXBinding对数据进行条件格式化。文章还提到了如何针对特定汇总项设置鼠标点击事件,并提供了XAML代码示例,强调了查阅官方文档的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最开始的提示

WPF毕竟是微软的东西,且用的人不多,遇到问题别在百度搜索了, 在必应搜吧,一搜一个准,直接搜到官方文档了。

汇总有两种

Summary Pannel和Fixed Summary Panel,对应的设置显示是
<dxg:TableView ShowTotalSummary=“True”
ShowFixedTotalSummary=“True”
>
在这里插入图片描述

详细参考这里

Summary Panel的设置参考这里

这里
在这里插入图片描述

Fixed Summary Panel的设置参考这里

这里
在这里插入图片描述

代码中都用到了DXBinding

官网的实例代码基本都是对值的控制,如下面的代码当结果值<15的时候字体颜色是红色。
那要对Item的控制呢怎么设置? 这个就需要 搜索下 “WPF DXBinding”的用法了。

<DataTrigger Binding="{DXBinding '(double)Value le 15'}" Value="True">
          <Setter Property="Foreground" Value="Red"/>
</DataTrigger>

多个汇总项,对某一项进行控制

<dxg:GridControl.TotalSummary>
    <dxg:GridSummaryItem SummaryType ="Average" FieldName="AvgValue" DisplayFormat = "平均值:{0:f4}" Alignment="Right"/>
    <dxg:GridSummaryItem SummaryType ="Sum" FieldName="AmountValue" DisplayFormat = " 总额:{0:N}" Alignment="Right"/>
    <dxg:GridSummaryItem SummaryType="Count" DisplayFormat = " 计数:{0:0}" Alignment="Right"/>
</dxg:GridControl.TotalSummary>
<DataTrigger Binding="{DXBinding '@c.Item.FieldName'}" Value="AvgValue">
    <Setter Property="Foreground" Value="Red"/>
    <Setter Property="TextDecorations" Value="Underline"/>
    <Setter Property="Cursor" Value="Hand"/>
</DataTrigger>

对GridSummaryItem是AvgValue的这一项汇总进行了特殊的设置,红色字体,下横线,鼠标手型。如下这样:
在这里插入图片描述

设置鼠标点击事件

请参考这里
例子中是在Style中增加一个Click事件,如果不支持可以增加一个MouseLeftButtonUp事件。

<EventSetter Event="MouseLeftButtonUp" Handler="MouseEvent"/>

整体的xaml代码如下

<dxg:GridControl.Resources>
    <Style x:Key="SummaryStyle" TargetType="Run">
        <EventSetter Event="MouseLeftButtonUp" Handler="MouseEvent"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Style.Triggers>
            <DataTrigger Binding="{DXBinding '@c.Item.FieldName'}" Value="AvgValue">
                <Setter Property="Foreground" Value="Red"/>
                <Setter Property="TextDecorations" Value="Underline"/>
                <Setter Property="Cursor" Value="Hand"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</dxg:GridControl.Resources>
<dxg:GridControl.TotalSummary>
    <dxg:GridSummaryItem SummaryType ="Average" FieldName="AvgValue" DisplayFormat = "平均值:{0:f4}" Alignment="Right"/>
    <dxg:GridSummaryItem SummaryType ="Sum" FieldName="AmountValue" DisplayFormat = " 总额:{0:N}" Alignment="Right"/>
    <dxg:GridSummaryItem SummaryType="Count" DisplayFormat = " 计数:{0:0}" Alignment="Right"/>
</dxg:GridControl.TotalSummary>
<dxg:GridControl.View>
    <dxg:TableView ShowFixedTotalSummary="True" 
                   ShowIndicator="False" 
                   ShowGroupPanel="False" 
                   AllowEditing="False"
                   RowMinHeight="28"
                   UseEvenRowBackground="True"
                   RowDoubleClick="TableView_RowDoubleClick"
                   BestFitMode="VisibleRows"
                   FixedTotalSummaryElementStyle="{StaticResource SummaryStyle}"
                   >
    </dxg:TableView>
</dxg:GridControl.View>

对应的.cs文件事件函数如下:

private void MouseEvent(object sender, RoutedEventArgs e)
{
    var ob = sender as System.Windows.Documents.Run;
    var summary = ob.DataContext as DevExpress.Xpf.Grid.GridSummaryDisplayData;
    if (summary.Item.FieldName=="AvgValue")
    {
       //todo
    }
}

总结

还是要多查官方文档。这个小功能,刚开始的时候都是用一些龌龊的方式实现,很不完美。 现在终于完美解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值