#c# #wpf
#c# #wpf
Вопрос:
В моем приложении есть элемент управления, которому необходимо знать, когда любой другой элемент управления в визуальном дереве захватывает мышь.
Возможно ли это?
Ответ №1:
Используйте мышь.Прикрепленное событие GotMouseCapture.
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
static MainWindow() {
EventManager.RegisterClassHandler(typeof(UIElement), Mouse.GotMouseCaptureEvent, new MouseEventHandler(MainWindow_GotMouseCapture));
}
static void MainWindow_GotMouseCapture(object sender, MouseEventArgs e) {
// e.OriginalSource is a captured element
}
}
Обратите внимание, что захваченный элемент доступен через мышь.Захваченное статическое свойство.
Комментарии:
1. Большое спасибо за ваш ответ. Хотя я пока не уверен, смогу ли я это использовать. Элемент управления, который хочет знать, захвачена ли мышь, находится глубоко в визуальном дереве и не может зарегистрировать обработчик событий на таком высоком уровне.
2. Я понимаю, что вы имеете в виду, вы вообще не используете MainWindow для регистрации события. Так что, возможно, это тот ответ, который мне нужен, я рассмотрю его снова.
3. Есть ли какой-либо способ отменить регистрацию обработчика класса?
4. Нет способа отменить регистрацию обработчика класса, но в большинстве случаев это не требуется