Name列でセルマージを行っているが、同じIDかどうかでマージするかどうかを決めている。

 

FieldSettingsのMergedCellEvaluatorプロパティにIMergedCellEvaluatorインターフェースを実装したクラスのインスタンスを指定してください。

IMergedCellEvaluatorインターフェースを実装したクラスでは、ShouldCellsBeMergedでマージするロジックをコーディングし、GetMergedCellValueでマージ後に表示するテキスト文字列を返してください。

<Window.Resources>
    <local:MyEvaluator x:Key="myEvaluator"/>
</Window.Resources>

<Grid>
    <igDP:XamDataGrid DataSource="{Binding People}">
        <igDP:XamDataGrid.FieldLayouts>
            <igDP:FieldLayout>
                <igDP:Field Name="ID" Label="ID"/>
                <igDP:Field Name="Name" Label="Name">
                    <igDP:Field.Settings>
                        <igDP:FieldSettings MergedCellMode="Always" MergedCellEvaluator="{StaticResource myEvaluator}"/>
                    </igDP:Field.Settings>
                </igDP:Field>
            </igDP:FieldLayout>
        </igDP:XamDataGrid.FieldLayouts>
    </igDP:XamDataGrid>
</Grid>
public class MyEvaluator : IMergedCellEvaluator
{
    public object GetMergedCellValue(DataRecord record, Field field)
    {
        return (record.DataItem as Person).Name;
    }

    public bool ShouldCellsBeMerged(DataRecord record, DataRecord adjacentRecord, Field field)
    {
        return (record.DataItem as Person).ID == (adjacentRecord.DataItem as Person).ID;
    }
}
Tagged: