В приложении 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?