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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top