Share via

how to make Image click through?

Vincent li 21 Reputation points
2023-01-03T08:01:06.993+00:00

I wanna display an icon in a window. I want the whole window click through including icon so user can operate other application behind the window as if the window and the icon don't exist. So I create a transparent window and put an Image control on it. Now the window is click through, but user cannot pass mouse click on the icon to the applications behind it. So is it possible to set such an image click through? I have tried to set focusable=false and IsHitTestVisible=false and even set e.Handled = false PreviewMouseLeftButtonDown handler, but no luck.
<Window x:Class="WpfApp1.MainWindow"
........
ShowInTaskbar="True"
BorderBrush="Gray"
Title="WpfAppDemo"
Background="{x:Null}"
AllowsTransparency="True"
WindowStyle="None"
Height="350"
Width="400">
<Border>
<Image Width="24" Height="24" Source="/WpfApp1;component/icon.png"/>
</Border>
</Window>

Developer technologies | Windows Presentation Foundation
Developer technologies | XAML
Developer technologies | XAML

A language based on Extensible Markup Language (XML) that enables developers to specify a hierarchy of objects with a set of properties and logic.

{count} votes

Answer accepted by question author
  1. Hui Liu-MSFT 48,711 Reputation points Microsoft External Staff
    2023-01-03T09:30:06.307+00:00

    Hi,@Vincent li . Welcome. Microsoft Q&A.
    According to my testing IsHitTestVisible=false works. You could try to refer to the code below.

    MainWindow.xaml:

        <Window x:Class="ImageClickThrough.MainWindow"  
    ....  
                mc:Ignorable="d" ShowInTaskbar="True"  
        BorderBrush="Gray" Background="{x:Null}"  
        AllowsTransparency="True"  
        WindowStyle="None"  
                Title="MainWindow" Height="450" Width="800">  
            <Grid>  
                <TextBlock Text="hello" Foreground="Red" FontSize="20" Height="24" Width="54" PreviewMouseDown="TextBlock_PreviewMouseDown" />  
                <Border>  
                    <Image Width="24" Height="24" Source="37.jpg"  IsHitTestVisible="False" MouseLeftButtonDown="Image_MouseDown" />  
                </Border>  
            </Grid>  
        </Window>  
    

    MainWindow.xaml.cs:
    275740-clickwindowthrough.txt

    The result:
    275894-22.gif

    If the response is helpful, please click "Accept Answer" and upvote it.
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.