wpf devexpressはグリッドを合計統計とグループ統計にバインドします

このトピックでは、ビュー モデルで合計統計とグループ統計を定義し、グリッド コントロールに表示する方法について説明します。

ビューモデルで統計を指定する

1. GridControl に表示する統計タイプの SummaryItemType 列挙を作成します。

public enum SummaryItemType { Max, Count, None }

2. グリッド統計記述クラスの作成

public class Summary : BindableBase {
    public Summary(SummaryItemType type, string fieldname) {
        Type = type;
        FieldName = fieldname;
    }
    public SummaryItemType Type { get; }
    public string FieldName { get; }
}

3. View Modelで合計およびグループ統計コレクションを指定します。

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 コレクションの変更を参照する必要がある場合、これらのコレクションは INotifyCollectionChanged インターフェイスを実装する必要があります。

統計テンプレートの作成

1. 統計タイプ (Min、Max、Count) を指定し、 SummaryItemBase.summaryType プロパティを SummaryItemType 列挙値に設定します。 SummaryItemType 列挙値を SummaryItemType 列挙値にマップする ObjectToObjectConverter を作成します。

<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. 統計を生成するためのテンプレートを作成する

SummaryTypeConverter を使用して、 SummaryItemBase.summaryType プロパティの Converter パラメーターを指定します。

GridControl 統計プロパティにバインドする場合は、DependencyObjectExtensions.DataContext 添付プロパティを使用します。この追加プロパティはデータを同期し、バインドされたプロパティを更新してグリッドのパフォーマンスを向上させます。
 

<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 でのビュー モデル統計の表示

1. TotalsummarySource プロパティと GroupsummarySource プロパティを合計統計コレクションとグループ統計コレクションにバインドします。

2. TotalsummaryGeneratorTemplate プロパティと GroupsummaryGeneratorTemplate プロパティをテンプレート生成統計に設定します

3. DataViewBase.TotalsummaryPosition プロパティを Top および Bottom に設定して、合計概要パネルを表示します。

<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>

おすすめ

転載: blog.csdn.net/loongsking/article/details/134454403
おすすめ