梧州網(wǎng)站建設(shè)設(shè)計百度服務(wù)電話在線人工
此主題描述了如何在gridcontrol中的視圖模型和顯示定義總計和分組統(tǒng)計
在視圖模型中指定統(tǒng)計
1、創(chuàng)建 SummaryItemType 枚舉你想要在GridControl中顯示的統(tǒng)計類型:
public enum SummaryItemType { Max, Count, None }
2、創(chuàng)建一個grid統(tǒng)計描述類
public class Summary : BindableBase {public Summary(SummaryItemType type, string fieldname) {Type = type;FieldName = fieldname;}public SummaryItemType Type { get; }public string FieldName { get; }
}
3、在視圖模型中指定合計和分組統(tǒng)計集合
public class CustomersViewModel : ViewModelBase {public CustomersViewModel() {// ...TotalSummary = new ObservableCollection<Summary>() {new Summary(SummaryItemType.Count, nameof(Customer.Name)),new Summary(SummaryItemType.Max, nameof(Customer.Visits))};GroupSummary = new ObservableCollection<Summary>() {new Summary(SummaryItemType.Count, nameof(Customer.Name))};}// ...public ObservableCollection<Summary> TotalSummary { get; }public ObservableCollection<Summary> GroupSummary { get; }
}
如果你需要GridControl引用在TotalSummary和GroupSummary集合中的改變,這些集合必須實現(xiàn)INotifyCollectionChanged 接口
創(chuàng)建統(tǒng)計模板
1、指定一個統(tǒng)計類型(Min,Max,Count),設(shè)置SummaryItemBase.SummaryType屬性到SummaryItemType枚舉值。創(chuàng)建ObjectToObjectConverter來映射SummaryItemType枚舉值到SummaryItemType枚舉值:
<Window ... xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"><Window.Resources><dxmvvm:ObjectToObjectConverter x:Key="SummaryTypeConverter"><dxmvvm:MapItem Source="Max" Target="Max" /><dxmvvm:MapItem Source="Count" Target="Count" /><dxmvvm:MapItem Source="None" Target="None" /></dxmvvm:ObjectToObjectConverter></Window.Resources><!-- ... -->
</Window>
2、創(chuàng)建一個模板生成統(tǒng)計
使用SummaryTypeConverter去指定Converter參數(shù)對于SummaryItemBase.SummaryType屬性
使用DependencyObjectExtensions.DataContext附加屬性當你綁定到GridControl統(tǒng)計屬性。這個附加的屬性同步數(shù)據(jù)更新束縛屬性提高grid性能:
?
<Window.Resources><DataTemplate x:Key="SummaryTemplate"><ContentControl><dxg:GridSummaryItem FieldName="{Binding Path=(dxci:DependencyObjectExtensions.DataContext).FieldName, RelativeSource={RelativeSource Self}}"SummaryType="{Binding Path=(dxci:DependencyObjectExtensions.DataContext).Type, RelativeSource={RelativeSource Self}, Converter={StaticResource SummaryTypeConverter}}"/></ContentControl></DataTemplate>
</Window.Resources>
在GridControl中顯示視圖模型統(tǒng)計
1、綁定TotalSummarySource和GroupSummarySource屬性到總計和分組統(tǒng)計集合
2、設(shè)置TotalSummaryGeneratorTemplate和GroupSummaryGeneratorTemplate屬性到模板生成統(tǒng)計
3、設(shè)置DataViewBase.TotalSummaryPosition屬性到Top和Bottom顯示Total Summary Panel
<dxg:GridControl ...TotalSummarySource="{Binding TotalSummary}"GroupSummarySource="{Binding GroupSummary}"TotalSummaryGeneratorTemplate="{StaticResource SummaryTemplate}"GroupSummaryGeneratorTemplate="{StaticResource SummaryTemplate}"><dxg:GridControl.View><dxg:TableView TotalSummaryPosition="Bottom"/></dxg:GridControl.View>
</dxg:GridControl>