WPF FrameworkElement Щелчок мышью - PullRequest
       53

WPF FrameworkElement Щелчок мышью

1 голос
/ 25 января 2011

В приложении WPF у меня есть куча CustomControls внутри Grid.Для обработки щелчков мышью по ним я использую событие 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)
        {
...

Проблема возникла, когда я поместил все пользовательские элементы управления в пользовательский элемент управления, а затемвнутри сетки.В этом случае подход не работает.
Я проверил тип источника кликов в каждом случае с помощью e.Source.GetType().ToString(); и получил следующие результаты:

Когда проблем нет (в случае, если я помещаю CustomControls в Grid без UserControl)

MyProjectNamespace.MyCustomControl

Когда я помещаю CustomControls в UserControl, а затем в сетку

MyProjectNamespace.UserControls.MyUserControlName

Когда я помещаю CustomControls в UserControl, а затем в сетку и загружаюUserControl из внешнего файла XamlReader.Load

System.Windows.Controls.UserControl

Итак, мой вопрос:
Как сделать CustomControls видимыми как e.Source, когда они находятся внутри UserControl?

1 Ответ

2 голосов
/ 25 января 2011

e.OriginalSource скажет вам, на каком конкретном элементе произошло нажатие.если это не ваш customcontrol, поднимитесь по цепочке Parent в OriginalSource, пока не найдете ваш customcontrol

...