隐藏鼠标左键上的边框和子控件在WPF中单击外部

时间:2017-07-23 18:19:24

标签: c# wpf xaml .net-3.5 border

我有以下边界:

    <Border CornerRadius="10,10,0,0" Height="23" 
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            BorderBrush="DarkBlue" 
            BorderThickness="1"  
            Background="AntiqueWhite">
            <StackPanel  Orientation="Horizontal" 
                         HorizontalAlignment="Center">
                <Image Source="/Resources/Info_48.png" 
                       Height="20" 
                       Width="20" 
                       Stretch="Fill"/>
                <TextBlock Width="90" 
                           VerticalAlignment="Center" 
                           HorizontalAlignment="Left" 
                           Background="Transparent" 
                           FontSize="12">
                     <Run Text="This is a Popup simulation"/>
                 </TextBlock>
            </StackPanel>
    </Border>

显示面板时,此边框可见。一旦显示了边框和子组件,它们将在窗口的任何位置单击鼠标时自动隐藏。

我要做的是检测boder及其子组件之外的鼠标单击事件。一旦在外部检测到点击,我需要在StaysOpen = false时隐藏边框及其子组件,类似于弹出窗口,并且在鼠标单击时自动隐藏。

如何检测控件外的鼠标点击?

1 个答案:

答案 0 :(得分:0)

将边框的样式设置为可见或通过更改颜色等隐藏边框。

<Border  Background="Transparent" 
     Height="18" Width="18">
 <Border.Style>
    <Style Target-type="Border">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="visibility" Value="false" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Border.Style>