我有一個WPF應用程序,我正在努力哪裏有一個按鈕被部分不透明的矩形覆蓋遮擋。該按鈕仍然可見,但無法接收任何事件,因爲它們都被位於其上方的矩形捕捉到。WPF - 從不在頂端的控件捕獲事件
是否有任何方法設置傳遞,以便下面的下一個可視項目接收事件?如果沒有,可以在這種情況下使用其他解決方法嗎?
我有一個WPF應用程序,我正在努力哪裏有一個按鈕被部分不透明的矩形覆蓋遮擋。該按鈕仍然可見,但無法接收任何事件,因爲它們都被位於其上方的矩形捕捉到。WPF - 從不在頂端的控件捕獲事件
是否有任何方法設置傳遞,以便下面的下一個可視項目接收事件?如果沒有,可以在這種情況下使用其他解決方法嗎?
在不透明疊加層上設置IsHitTestVisible =「false」。
你需要設置IsHitTestVisible =「False」來控制你的按鈕。
這個例子表明,一個按鈕被邊框覆蓋,但是由於因爲IsHitTestVisible =「假」邊界條件的邊界沒有得到任何事件:
<Grid Background="Yellow">
<Button Click="Button_Click" Width="100" Height="25"/>
<Border Background="Cyan" Opacity="0.4" Width="200" Height="200" IsHitTestVisible="False" />
</Grid>
C#代碼,
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("iiiiiii");
}
您可以添加自己的事件的矩形事件(或矩形它自身的單擊事件),檢查那裏是否與在按鍵區
Rectangle.Click += your_click_event;
private void your_click_event(object sender, RoutedEventArgs e)
{
//check if it's coordinates are within the underlining button.
//fire button click event
}
但它會更以無限便捷設置
IsHitTestVisible="False"
像其他職位提到。 UIElement.IsHitTestVisible Property
我會建議看看在WPF路由事件。路由事件主要基於視覺樹進行路由。路由事件支持Bubble,Tunnel或Direct的RoutingStrategy。
獲得任何代碼或可見? –