Приложение Silverlight Handle MouseLeftButtonDown? - PullRequest
2 голосов
/ 13 января 2011

В моем проекте Silverlight у меня есть Меню, которое я хочу закрыть, , если я нажму в любом месте за его пределами . Я добавляю обработчик в событие клика в приложении:

AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu

Но проблема в том, что: не входит в обработчик, когда я нажимаю на любую другую команду или нажимаю на тот же элемент управления, у которого есть контекстное меню, это только ввод когда я нажимаю на пустую область за пределами меню.

Спасибо.

1 Ответ

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

Я не знал, что это была подпись AddHandler, которая принимает только 2 параметра, возможно, это вещь VB, что вам это сходит с рук, и по умолчанию третий параметр имеет значение False. Этот параметр является параметром handledEventsToo , который указывает, что вы хотите, чтобы ваш обработчик выполнялся, даже если какой-то другой элемент управления обработал событие.

Я думаю, VB будет выглядеть так: -

AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu, True

Редактировать

Позволяет отказаться от этого VB-кода, который в любом случае неверен. Вот как должен выглядеть код в C # (вы должны быть достаточно знакомы с переводом, так как подавляющее большинство примеров кода в Интернете для silverlight будет на C #).

 this.AddHandler(UIElement.MouseLeftButtonDownEvent, HideMenu, true);

Где этот код находится в коде позади содержащего UserControl и HideMenu имеет эту подпись: -

 void HideMenu(object sender, MouseEventArgs e)
 {
 }
...