Domanda

In un'applicazione WPF ho io mucchio di CustomControls all'interno di una griglia. Per la lavorazione di clic del mouse su di loro io uso l'evento MouseLeftButtonDown della griglia e nel controllo ho gestore di eventi che CustomControl stato cliccato:

private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement feSourceComm = e.Source as FrameworkElement;
        MyCustomControl SCurrentComm = new MyCustomControl();            
        try
        {
            SCurrentComm = (MyCustomControl)feSourceComm;
        }
        catch (Exception)
        {
...

Il problema è apparso quando ho messo tutti i CustomControls in un controllo utente e quindi all'interno della griglia. In questo approccio caso non funziona.
Ho controllato il tipo di fonte di click in ogni caso per e.Source.GetType().ToString(); e ottenere i seguenti risultati:

Quando non ci sono nessun problema (nel caso in cui ho messo CustomControls nella griglia senza UserControl)

MyProjectNamespace.MyCustomControl

Quando ho messo CustomControls nel UserControl e poi nella griglia

MyProjectNamespace.UserControls.MyUserControlName

Quando ho messo CustomControls nel UserControl e poi nella griglia e caricare l'UserControl da file esterno da XamlReader.Load

System.Windows.Controls.UserControl

Quindi, la mia domanda:
Come fare CustomControls vizible come e.Source quando sono all'interno di un UserControl?

È stato utile?

Soluzione

e.OriginalSource vi dirà quale elemento specifico il click è accaduto. se questo non è il vostro CustomControl, a piedi, lungo la catena capogruppo del OriginalSource fino a trovare il tuo CustomControl

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top