文章目录
- 最开始的提示
- 汇总有两种
- Summary Panel的设置参考这里
- Fixed Summary Panel的设置参考这里
- 代码中都用到了DXBinding
- 多个汇总项,对某一项进行控制
- 设置鼠标点击事件
- 整体的xaml代码如下
- 总结
最开始的提示
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
}
}
总结
还是要多查官方文档。这个小功能,刚开始的时候都是用一些龌龊的方式实现,很不完美。 现在终于完美解决。