Toutes mes excuses pour le retard de lui répondre, devait avoir un peu d'une expérience pour le faire fonctionner. Donnez le code suivant un aller. Je viens de créer ma propre source de données pour que je puisse afficher certaines données. Il ne s'affiche que si je fais un clic droit sur le titre de la première colonne et nulle part ailleurs ... ce que je pense est ce que vous voulez, non? Faites-moi savoir comment vous allez ... tous les problèmes continueront à avoir une réflexion.
<Grid>
<ListView Margin="8,8,33,12" ItemsSource="{Binding Source={StaticResource Stuff}, Path=MyCollection}">
<ListView.View>
<GridView>
<GridViewColumn Width="100" DisplayMemberBinding="{Binding}">
<GridViewColumnHeader>ProductName
<GridViewColumnHeader.ContextMenu>
<ContextMenu Name="MyMenu">
<MenuItem Header="Sort by..."/>
<MenuItem Header="Follow link..."/>
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn Width="100" Header="Product Name" DisplayMemberBinding="{Binding Path=Length}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
Dans mon cas, je veux que le ContextMenu à joindre aux éléments d'en-tête d'un GridView dans un ListView - toute idée où mettre le ContextMenu dans ce cas (je ne veux pas être partout le ContextMenu dans la ListView, juste l'en-tête)? – Sam
Salut Sam, juste répondu comme une nouvelle 'réponse' afin que le code formaterait bien. Voir ci-dessous. – jameschinnock
Je pense que c'est la meilleure réponse car cela déplace la responsabilité de l'affichage du menu dans la vue tout en gardant l'exécution de la logique pour les éléments de menu dans la machine virtuelle. Cela signifie également que les éléments du menu peuvent être réarrangés, supprimés, modifiés, etc. sans que la machine virtuelle soit impliquée puisque la présentation est entièrement dans le code XAML. – nrjohnstone