Я использую приложение WPF c #. У меня есть пользовательский элемент управления, который содержит сетку данных.
Я пытаюсь отправить публичное событие из пользовательского элемента управления, щелкнув правой кнопкой мыши.
Вот созданное публичное мероприятие
public event MouseButtonEventHandler datagridMouseClick;
Далее его следует запустить в этом обработчике сетки данных:
private void dataGrid1_MouseDown(object sender, MouseButtonEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) &&
!(dep is DataGridCell) &&
!(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep is DataGridCell)
{
cell = dep as DataGridCell;
while ((dep != null) && !(dep is DataGridRow))
{
dep = VisualTreeHelper.GetParent(dep);
}
row = dep as DataGridRow;
}
this.datagridMouseClick(sender, e); // GIVING ERROR
}
Это дает мне исключение NullReferenceException. Можете ли вы помочь мне понять, почему. Спасибо заранее, любая помощь приветствуется
С уважением
Событие обрабатывается в другом классе (на самом деле это другой проект, так как вышеприведенный разделен на dll) ..
Поэтому его прослушивают, когда здесь инициализируется другой класс ..
public Window1()
{
InitializeComponent();
search.datagridDoubleClick +=new RoutedEventHandler(search_datagridDoubleClick);
search.datagridMouseClick += new MouseButtonEventHandler(search_datagridMouseClick); /* Only this one gives error , even if the other one is handled exactly the same way in the code o.O */
}
Где поиск - это имя объекта, содержащего вышеуказанный 1-й код
Я думаю, что проблема в том, что я пытаюсь прослушать событие, запущенное из другого класса / проекта (так как первый код взят из .dll) таким образом, что текущий класс не инициализирует слушателя и сохраняет его равным нулю. Несмотря на то, что я использовал этот метод EXACT на search.datagridDoubleClick выше и работает отлично (это странно).
PS. я не понимаю -1, звучит как ценный вопрос для меня, в любом случае ...