2017-01-23 116 views
0

我打算開發一個模塊化內容的應用程序。任何模塊化內容只是一個自定義用戶控件。該應用程序還需要有可能禁用任何用戶輸入,如點擊事件。是否有可能設置的事件隧道爲默認,所以我可以做在每個控件上設置事件隧道默認設置

event.Handled = true; 
我的主機上

,防止事件到達它的源代碼(模塊化內容)?因此,不管內容如何,​​我總是希望事件能夠通過隧道而不是冒泡。

這裏有一個簡單的素描時,我提出來證明我的需求Basic application sketch

也許有一個「更好」的方式來做到這一點。如果是這樣,請分享您的想法。

+0

看到這個問題的一些想法: http://stackoverflow.com/questions/634434/add-listener-for-all-element-events-in-wpf –

回答

1

如果我理解正確的話,你可以處理主機窗口的PreviewMouseLeftButtonDown事件並設置MouseButtonEventArgs.Handled屬性爲true,以防止隧道路由事件到模塊化內容:

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

這應該有效地禁用UserControl中的左鍵鼠標輸入。還有其他幾個預覽*事件:https://msdn.microsoft.com/en-us/library/ms752279(v=vs.110).aspx