WPF MenuItem Header et HeaderTemplate
Je veux lier une liste de KeyValuePair à une liste de MenuItems.
J'ai pensé que je devrais utiliser MenuIten.HeaderTemplate, mais il ne fonctionne pas. J'ai seulement eu en-têtes vides.
<MenuItem
Header="Template"
ItemsSource="{Binding Path=Samples}">
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem>
<MenuItem.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Key}" FontWeight="Bold"/>
<TextBlock Text="{Binding Path=Value}" FontStyle="Italic" Margin="5,0,0,0"/>
</StackPanel>
</DataTemplate>
</MenuItem.HeaderTemplate> </MenuItem>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
Puis j'ai remplacé MenuItem.HeaderTemplate avec MenuItem.L'en-tête, il a travaillé.
<MenuItem
Header="Template"
ItemsSource="{Binding Path=Samples}">
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem>
<MenuItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Key}" FontWeight="Bold"/>
<TextBlock Text="{Binding Path=Value}" FontStyle="Italic" Margin="2,0,0,0"/>
</StackPanel>
</MenuItem.Header>
</MenuItem>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
Quelqu'un peut-il m'expliquer pourquoi HeaderTemplate ne fonctionne pas ici?
source d'informationauteur Kai Wang
Vous devez vous connecter pour publier un commentaire.
Parce que le HeaderTemplate n'a pas accès aux données d'être lié à l'élément de menu.
Micah est correct. Dans la première approche, j'ai dit à l'élément de menu comment le modèle lui-même mais n'a jamais dit ça, quoi de données, il se lie à! Les ouvrages suivants:
Le but de le Modèle est d'ajouter des éléments à la VisualTree. DataTemplate est utilisé pour les sous-éléments ([Sub]MenuItem, ListBoxItem dans la zone de liste, et ainsi de suite) et est appliquée aux éléments de titulaire, il est contraire à la ControlTemplate, qui est appliquée pour le contrôle de lui-même.
Ce que vous avez fait par ce
est de dire "je veux prendre MenuItem contenu et Insérer les données, qui doit être visualisé". Et puis insérez cette insted points:
Donc, vous êtes à l'insertion d'élément de menu supplémentaire à l'itération élément de menu. Je ne vois pas le point.
La prochaine est le plus clair:
La HeaderTemplate définition devrait être un DataTemplate, pas diriger le contenu de l'INTERFACE utilisateur :