-4

SL DataGridのサマリーヘッダー行を実装するDataGridsItemsSourceプロパティにバインドする(そして適用するIValueConverter)方法が見つかりません。

単にBindingを指定すると、ConverterはViewModelをDataGrids DataContextとして受け取りますが、ViewModelをConverterに結合したくありません。

<!-- somewhere in my DataGrid ControlTemplate -->
<sdk:DataGridCell Content="{Binding Converter={StaticResource SummaryRow}}" />

を作成しようとしましたRelativeSourceが、xamlAncestorTypeはこのコンテキストでは使用できないと文句を言います。

<sdk:DataGridCell Content="{Binding RelativeSource={RelativeSource FindAncestor AncestorType={x:Type DataGrid}}, Converter={StaticResource SummaryRow}}" />

私のDataGrid自体は、CollectionViewSourceグループ化と並べ替えを処理するにバインドされています。

最初のアプローチを使用するための列の合計の表示をすでに実装しDataGridRowGroupHeaderました。それぞれのコンバーターはCollectionViewGroup、ViewModelに結合せずにアイテムを取得できるからを受け取ります。

4

1 に答える 1

1

これを実現する正しい方法をListCollectionView見つけ、DataGridsItemsSourceへのバインドをIValueConverterカスタマイズした内部に渡しControlTemplateます。

<Style TargetType="sdk:DataGrid">
  <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="sdk:DataGrid">

    <!-- Rest of ControlTemplate xaml omitted -->

    <sdk:DataGridCell 
        Content="{Binding Path=ItemsSource, 
                          RelativeSource={RelativeSource}, 
                          Converter={StaticResource SummaryRow}}" />
    <!-- ... -->

    </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>
于 2013-01-31T09:11:27.597 に答える