在wpf中单击图像外部时隐藏图像



当我的WPF应用程序加载时,一个图像显示在中间。如何处理图像外的鼠标点击。当用户点击图像外部时,它会隐藏起来。我的代码在c#中。

您可以简单地向顶级控件添加一个处理程序,例如GridWindow等。在该处理程序中,您可以检查单击的控件是否为Image,如果不是,则可以隐藏它:

XAML:

<Grid PreviewMouseLeftButtonDown="Grid_PreviewMouseLeftButtonDown">
    ...
    <Image Name="TheImage" Source="/WpfApplication2;component/Images/Add_16.png" />
    ...
</Grid>

背后的代码:

private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (e.OriginalSource != TheImage)
    {
        TheImage.Visibility = Visibility.Hidden;
    }
}

虽然这满足了您的要求,但需要注意的是,一旦隐藏,Image将不再"可点击"。

只需将代码MyImage.Visibility = System.Windows.Visibility.Hidden;放入要捕获的任何事件中。

例如:

private void MyButton_Click_1(object sender, RoutedEventArgs e)
{
    MyImage.Visibility = System.Windows.Visibility.Hidden;
}

private void MyTextbox_PreviewMouseDown_1(object sender, MouseButtonEventArgs e)
    {
        MyImage.Visibility = System.Windows.Visibility.Hidden;
    }
private void MyWindow_MouseDown(object sender, MouseButtonEventArgs e)
    {
        MyImage.Visibility = System.Windows.Visibility.Hidden;
    }

其中MyImage是图像的名称,MyTextbox是文本框的名称,MyButton是按钮的名称,而MyWindow是主窗口的名称

您可以简单地编写

YourImageName.Visibility = Visibility.Hidden;

将此代码写入任何控件,即TextBoxButton

首先单击窗体以选择它。然后转到事件的部分(靠近属性部分),双击单击事件以在单击窗体时进行函数调用。在代码中,将sender对象与IsEqual(obj)方法进行比较,查看sender是否为同一图像。如果不隐藏它。:)

您可以处理应用程序当前窗口的点击事件,在该事件内,您可以检查鼠标位置是在该图像内还是在该图像外,在此基础上,您可以设置您喜欢的图像可见性条件。

代码示例:

//registering event
Application.Curent.mainWindow.MouseRightButtonDown += MainWindow_MouseRightButtonDown;
//event implementation
void MouseRightButtonDown(object sender , MouseButtonEventArgs e)
{
//here you can check the ui element for image control using sender
//below will let you know the position of Click 
e.GetPosition(// pass the ui element here)
}

注意:上面显示的代码是应用程序级别的点击处理。如果你不希望在应用程序级别上,您可以使用父xaml图像存在并执行相同的

最新更新