2017-01-23 16 views
0

Я планирую разработать приложение с модульным контентом. Любой модульный контент - это просто пользовательский элемент управления. Приложение также должно иметь возможность отключить любой ввод пользователя, например, события кликов. Можно ли установить туннелирование события по умолчанию, так что я могу сделатьНастройка туннелирования событий по умолчанию для каждого элемента управления

event.Handled = true; 

на моем хосте и предотвратить событие, чтобы достичь его источник (Modular содержания)? Поэтому, независимо от содержания, я всегда хочу, чтобы события туннелировались, а не пузырялись.

Вот простой эскиз я сделал, чтобы продемонстрировать свои потребности Basic application sketch

Может быть, есть «лучше» способ сделать это. Если да, то поделитесь своими мыслями.

+0

Другие вопросы: http://stackoverflow.com/questions/634434/add-listener-for-all-element-events-in-wpf –

ответ

1

Если я вас правильно понял вы могли бы обрабатывать событие PreviewMouseLeftButtonDown окна хоста и установить свойство MouseButtonEventArgs.Handled истину предотвратить маршрутизируемое событие от туннелирования до модульного содержания:

public partial class HostWindow : Window 
{ 
    public HostWindow() 
    { 
     InitializeComponent(); 
     PreviewMouseLeftButtonDown += (s, e) => e.Handled = true; 
    } 
} 

Это должно эффективно отключите левую кнопку мыши в UserControl. Также есть несколько других событий Preview *: https://msdn.microsoft.com/en-us/library/ms752279(v=vs.110).aspx