部分的に不透明な四角形のオーバーレイによって隠されているボタンがあるところで私が作業している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
}
01だ場合がチェックできます
しかし、他の記事で述べたように
IsHitTestVisible="False"
を設定するために、よりconvientだろう。 UIElement.IsHitTestVisible Property
WPFのルーティングイベントを調べることをお勧めします。ルーテッド・イベントは、主にビジュアル・ツリーに基づいてルーティングされます。ルーテッドイベントは、バブル、トンネル、またはダイレクトのRoutingStrategyをサポートします。
コードまたはビジュアルがありますか? –