ItemsControl avec en-tête statique

Je pense avoir une assez simple but mais ne peut pas sembler l'atteindre.

Tout ce que je veux atteindre est d'avoir un ItemsControl (parce que je ne veux pas la fonctionnalité de sélection d'une liste) avec un en-tête. De préférence, un en-tête statique.

Actuellement, je suis en utilisant une grille pour l'en-tête et la copie de cette grille dans le ItemTemplate (DataTemple) de la ItemsControl, puis de les placer l'un au-dessus de l'autre dans une grille. Ça fonctionne, mais sa ce n'est pas toujours la ligne joliment etc.

J'ai ensuite trouvé le HeaderedItemsControl j'ai pensé que c'était une idée brillante, mais ne peux pas le faire fonctionner, il n'a tout simplement pas afficher l'en-tête.
J'ai essayé le suivant;

  • Juste d'entrer du texte dans la "Tête" de la Xaml
  • Placer une grille avec TextBlocks avec du texte statique dans la ItemsControl.Balise d'en-tête
  • Placer la grille dans le HeaderTemplate (Datatemplate) et de la lier à un objet simple

Je suis en train de faire tout cela dans le Mélange dans un petit projet avant de le déplacer dans la production de l'app et je suis juste à l'aide d'un simple échantillon de la source de données que j'ai créé.

J'ai peut-être de manquer le bateau complètement ici, mais toute aide serait appréciée.

Mon code est comme suit, la première est ma HeaderedItemsControl

<HeaderedItemsControl Header="HeaderedItemsControl"  
        ItemsSource="{Binding Collection, Mode=Default}" 
        ItemTemplate="{DynamicResource ItemsControlDataTemplate}" 
        HeaderTemplate="{DynamicResource ItemsControlHeaderDataTemplate}"/>

ensuite, j'ai une ItemTemple qui fonctionne comme prévu

<DataTemplate x:Key="ItemsControlDataTemplate">
        <Grid d:DesignWidth="268">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.754*"/>
                <ColumnDefinition Width="0.246*"/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="{Binding Property1, Mode=Default}" TextWrapping="Wrap" d:LayoutOverrides="Height" HorizontalAlignment="Stretch" Margin="0" />
            <TextBlock Text="{Binding Property2, Mode=Default}" TextWrapping="Wrap" d:LayoutOverrides="Height" Grid.Column="1" HorizontalAlignment="Left" Margin="0" />
        </Grid>
    </DataTemplate>

et puis l'en-tête d'un air de défi s'opposant à son éthique de travail, je l'ai essayé avec de liaison et avec juste du texte brut dans le TextBlock.Texte de la propriété

<DataTemplate x:Key="ItemsControlHeaderDataTemplate">
        <Grid d:DesignWidth="268">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.754*"/>
                <ColumnDefinition Width="0.246*"/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="{Binding Header.Header1, Mode=Default, Source={StaticResource SampleDataSource6}}" TextWrapping="Wrap" HorizontalAlignment="Stretch" Margin="0"/>
            <TextBlock Text="{Binding Header.Header2, Mode=Default, Source={StaticResource SampleDataSource6}}" TextWrapping="Wrap" d:LayoutOverrides="Height" Grid.Column="1" HorizontalAlignment="Left" Margin="0"/>
        </Grid>
    </DataTemplate>

source d'informationauteur Organ Grinding Monkey