我正在WPF應用程序,其中我有一個窗口級別雙擊事件,當用戶雙擊事件時最大化應用程序窗口,點擊窗口內的任何地方。但是,我也在應用程序窗口中有一個自定義控件,並且在自定義控件中有一個單獨的雙擊事件。當用戶在自定義控件中雙擊時,只會觸發控件的雙擊事件,並且窗口不應調整大小。我的代碼看起來是這樣的:雙擊事件觸發窗口級別和控制級別,即使它在控制內處理
public class Window
{
private void window_DoubleClick(object sender, EventArgs e)
{
/// Maximize/minimize window
}
private void myCustomControl_DoubleClick(object sender, EventArgs e)
{
/// Do other things, but PLEASE don't resize!
e.Handled = true;
}
}
我的XAML看起來是這樣的:
<Window x:class="MyProject.MyWindow"
MouseDoubleClick="window_DoubleClick">
<Grid Grid.Row="0" Margin="0">
<local:myCustomControl
MouseDoubleClick="myCustomControl_DoubleClick"/>
</Grid>
</Window>
不幸的是,這段代碼的地點,當用戶雙擊在控制,控制事件發生火災,但Window事件也會發生。我已經嘗試在控件事件中設置e.Handled = true,但Window事件無論如何都會觸發。利用這一點,已經停止了窗口級別唯一雙擊從着火事件正在處理自定義控件的預覽雙擊事件:雖然預覽活動停止窗口中雙擊它可以發射前
private void myCustomControl_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
,我無法重構一小段代碼就無法使用它。我的自定義控件有幾個子控件也處理它的雙擊事件。如果預覽事件在父級控制級別被調用,那麼雙擊事件永遠不會通過子控件向下隧道,因此雙擊不會完成我想要的操作。如果可能的話,我想避免重構子控件中的任何代碼。這就是說,我的問題是這樣的:有沒有辦法阻止窗口級雙擊事件觸發一旦控件的雙擊事件已被處理?我一直在駕駛自己瘋狂試圖弄清楚這一點..任何幫助表示讚賞!
請參閱[「應該在其標題中包含」標籤?「](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles),其中共識是「不,他們不應該」! –