2013-01-30 4 views
-5

Implémentation d'une ligne d'en-tête récapitulative pour un DataGrid SL Je ne parviens pas à trouver un moyen de lier la propriété ItemsSource DataGrids (et d'appliquer un IValueConverter).Liaison à DataGrid ItemsSource dans DataGrid ControlTemplate

Lorsque la simple spécification de liaison du convertisseur reçoit le ViewModel comme DataGrids DataContext, mais je préfère ne pas coupler le ViewModel à mon Converter:

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

J'ai essayé de créer un RelativeSource, mais XAML se plaint que je ne peux pas utiliser AncestorType dans ce contexte:

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

Mon DataGrid est lui-même lié à un CollectionViewSource qui gère le regroupement et le tri.

J'ai déjà mis en œuvre l'affichage des sommes de colonnes pour DataGridRowGroupHeader en utilisant la première approche et le convertisseur respectif reçoit un CollectionViewGroup à partir duquel je peux récupérer des éléments sans se coupler au ViewModel.

+0

Downvoter: soin d'expliquer ce qui est mal à ma question? – Filburt

Répondre

0

Je compris la bonne façon d'y parvenir et passer le ListCollectionView lié aux DataGrids ItemsSource à l'intérieur de mon IValueConverter sur mesure 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>