question WPF FrameworkElement Souris Click
-
24-10-2019 - |
Question
Dans une application WPF j'ai groupe I de CustomControls à l'intérieur d'une grille. Pour le traitement de clics de souris sur eux que j'utilise l'événement MouseLeftButtonDown
de la grille et dans le gestionnaire d'événements vérification I qui a été cliqué CustomControl:
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement feSourceComm = e.Source as FrameworkElement;
MyCustomControl SCurrentComm = new MyCustomControl();
try
{
SCurrentComm = (MyCustomControl)feSourceComm;
}
catch (Exception)
{
...
Le problème est apparu lorsque je place tous CustomControls dans un UserControl puis à l'intérieur de la grille. Dans cette approche de cas ne fonctionne pas.
J'ai vérifié le type de clic source dans chaque cas par e.Source.GetType().ToString();
et obtenir les résultats suivants de:
Quand il n'y a pas de problème (au cas où je mis CustomControls dans la grille sans UserControl)
MyProjectNamespace.MyCustomControl
Quand je mets CustomControls dans le UserControl puis dans la grille
MyProjectNamespace.UserControls.MyUserControlName
Quand je mets CustomControls dans le UserControl, puis dans la grille et la charge du UserControl de fichier externe par XamlReader.Load
System.Windows.Controls.UserControl
Alors, ma question:
Comment faire CustomControls Vizible comme e.Source
quand ils sont à l'intérieur d'un UserControl?
La solution
e.OriginalSource
vous dira quel élément spécifique le clic est passé sur. si ce n'est pas votre CustomControl, marcher jusqu'à la chaîne mère du OriginalSource
jusqu'à ce que vous trouviez votre CustomControl