1

私は階層データモデルを持っています:

public class AssetClassLevelViewModel
{    
     public string AssetClassName {get; set;}

     public ObservableCollection<AssetClassLevelViewModel> ChildAssetClasses {get; set;}

     public ObservableCollection<ProductHoldingsWithAllocationViewModel> ProductHoldings {get; set;}

}

画像に表示されている列ヘッダーは、ProductHoldingsWithAllocationViewModel プロパティを反映しています。

複数レベルの階層と列ヘッダーのスナップショット

列ヘッダーをグリッドの上に移動する必要があり、各グループ レベルでそれらを繰り返したくありません。

これに対する解決策はありますか?xaml で、HeaderPlacementプロパティを次のように設定しましたOnTopOnly

ありがとう

ハサナイン

4

3 に答える 3

2

次のスタイルを使用して、ヘッダー行が一番上にあることを確認できると思います。

<Style TargetType="{x:Type Ig:XamDataGrid}" BasedOn="{StaticResource {x:Type Ig:XamDataGrid}}">
  <Setter Property="FieldLayoutSettings">
    <Setter.Value>
      <igDP:FieldLayoutSettings HeaderPlacement="OnTopOnly" HeaderPlacementInGroupBy="OnTopOnly"/>
    </Setter.Value>
  </Setter>
</Style>

「OnTopOnly」は、ヘッダー行が各グループヘッダーではなく、グリッドの最上部にのみ表示されるようにすると思います。

于 2012-07-20T04:52:25.837 に答える
0

Infragistics は、すべての子テーブル ヘッダーを非表示にするために、次の回避策を提案しました。

リソースに次のスタイルを追加DataRecordPresenterします。

<local:TestConverter2 x:Key="testconv2"/>
<Style TargetType="{x:Type igDP:DataRecordPresenter}">
   <Setter Property="Height" Value="{Binding Converter={StaticResource testconv2}}"/>
</Style>

そして、次のコンバーターをプロジェクトに追加します。

public class TestConverter2 : IValueConverter
{
    private int count = 0;

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        DataRecord dr = value as DataRecord;
        if (dr == null)
        {
            return double.NaN;
        }

        if (dr is HeaderRecord)
        {
            if (this.count < 1)
            {
                this.count++;
                return double.NaN;
            }
            else
            {
                return 0;
            }
        }
        else
        {
            return double.NaN;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value;
    }
}
于 2014-04-03T14:05:38.797 に答える
0

回答には少し遅れるかもしれませんが、XAML の XamDataGrid では、FilterUIType-Property を LabelIcons に設定するだけで、XamDataGrid がグループ化されると、ColumnHeaders が一番上に表示されます。ここのように:

<igDP:XamDataGrid.FieldLayoutSettings>
   <igDP:FieldLayoutSettings FilterUIType="LabelIcons"/>
</igDP:XamDataGrid.FieldLayoutSettings>
于 2017-05-24T13:00:08.493 に答える