Pregunta

En una aplicación WPF tengo un montón de CustomControls dentro de una cuadrícula. Para procesar los clics del mouse en ellos, uso el MouseLeftButtonDown Evento de la cuadrícula y en el controlador de eventos verifíquelo en qué CustomControl se hizo clic:

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

El problema apareció cuando coloqué todos los Controlos Custom en un UserControl y luego dentro de la cuadrícula. En este caso, el enfoque no funciona.
Revisé el tipo de fuente de clic en cada caso por e.Source.GetType().ToString(); Y obtenga los siguientes resultados:

Cuando no hay problema (en caso de que coloque CustomControls en la cuadrícula sin UserControl)

MyProjectNamespace.MyCustomControl

Cuando pongo CustomControls en UserControl y luego en la cuadrícula

MyProjectNamespace.UserControls.MyUserControlName

Cuando pongo CustomControls en UserControl y luego en la cuadrícula y cargue el UserControl desde el archivo externo por XamlReader.Load

System.Windows.Controls.UserControl

Entonces, mi pregunta:
Cómo hacer que CustomControls sea visible como e.Source ¿Cuándo están dentro de un UserControl?

¿Fue útil?

Solución

e.OriginalSource le dirá en qué elemento específico se encuentra el clic. Si ese no es su Control Custom, camine por la cadena principal del OriginalSource Hasta que encuentre su CustomControl

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top