[Interaction WPF/C#]Reliè un evenement d'une classe a la fonction d'une autre classe
Bonjour,
Je tente de personnaliser une TreeView afin d'afficher des Map et des Epaisseur
une Map pouvant contenir plusieurs Epaisseur
Nous avons donc au maximum 2 niveau.
Pour alleger le code source WPF j'ai mis en place un Dictionnaire de Ressource pour mes Styles et Template
une partie du Dictionnaire de Ressource
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <ResourceDictionary x:Class="MedievalWars_Mapping.dictionaryStyle"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:cc="clr-namespace:MedievalWars_Mapping"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- DataTemplate d'un Element Map -->
<HierarchicalDataTemplate x:Key="dtMap" ItemsSource="{Binding SubItems}">
<TextBlock Foreground="Black" Text="{Binding Identifiant}">
<TextBlock.ContextMenu>
<ContextMenu Name="ctmMap">
<MenuItem Header="Ajouter Epaisseur" Click="MenuItem_AjouterEpaisseur_Click" />
<Separator />
<MenuItem Header="Parametrer"/>
<MenuItem Header="Supprimer" />
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
</ResourceDictionary> |
winPrincipal contient une TreeView qui possede des Items beneficiant du HierarchicalDataTemplate ci-dessus. Ce Template ajoute un menu contextuel et maintenant j'aimerais ajouter la fonction correspondant au Click des elements du menu
le 1er solution me venant a l'esprit et d'ajouter
Code:
1 2 3 4 5 6 7
| public partial class dictionaryStyle
{
public void MenuItem_AjouterEpaisseur_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("test ajout epaisseur in ds class : OK!!");
}
} |
avec a la place de MessageBox(c'était pour des test) le declanchement de la fonction adequat dans winPrincipal avec tout ce que cela implique(gestion de l'instance de winPrincipal.....)
ma question est donc, n'y a t-il pas un moyen plus simple de mettre en relation mon Dictionnaire de Ressource et ma Fenetre???
EDIT: il faudrais ausi que je puisse acceder a mes MenuItem pour leur assigner une Icon en C#, je recupere l'icon depuis une fonction d'une librairie
merci