Приложение Silverlight Handle MouseLeftButtonDown?

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

AddHandler App.Current.RootVisual.MouseLeftButtonDown, AddressOf HideMenu

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

Спасибо.


person Saad    schedule 13.01.2011    source источник


Ответы (1)


Я не знал, что это сигнатура 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)
 {
 }
person AnthonyWJones    schedule 13.01.2011