WPF FrameworkElement Mouse Click Проблема
-
24-10-2019 - |
Вопрос
В приложении WPF у меня есть куча пользовательских контролей в сетке. Для обработки щелчков мыши на них я использую MouseLeftButtonDown
Событие сетки и в обработке событий я проверяю, какой 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)
{
...
Проблема появилась, когда я поместил все CustomControls в USERCONTROL, а затем внутри сетки. В этом случае подход не работает.
Я проверил тип источника клика в каждом случае e.Source.GetType().ToString();
и получить следующие результаты:
Когда нет проблем (в случае, если я помещаю Customcontrols в сетку без USerControl)
MyProjectNamespace.MyCustomControl
Когда я помещаю Customcontrols в UserControl, а затем в сетку
MyProjectNamespace.UserControls.MyUserControlName
Когда я помещаю CustomControls в USERCONTROL, а затем в сетку и загружаю USERCONTROL из внешнего файла по XamlReader.Load
System.Windows.Controls.UserControl
Итак, мой вопрос:
Как сделать Customcontrols, как e.Source
Когда они находятся в UserControl?
Решение
e.OriginalSource
Расскажу вам, какой конкретный элемент произошел щелчок. Если это не ваш CustomControl, пройдите по родительской цепи OriginalSource
Пока вы не найдете свой пользовательский контроль