Problema de clic del mouse WPF FrameWorkElement
-
24-10-2019 - |
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?
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