探测控件外的点击事件

4
当用户单击按钮时,我在网格中显示TestControl:
<Grid>
    <myControls:TestControl Panel.ZIndex="2" Visibility="Collapsed" Width="100" Height="100" />
    <Button "Open Test Control" Click="btnOpen_Click" />
</Grid>

当用户在TestControl之外单击时,如何隐藏TestControl?
2个回答

4
你可以处理 GridPreviewMouseLeftButtonDown 事件:
<Grid Background="Transparent" PreviewMouseLeftButtonDown="Grid_PreviewMouseLeftButtonDown">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <myControls:TestControl x:Name="tc" Visibility="Collapsed" Width="100" Height="100" />
    <Button Content="Open Test Control" Click="btnOpen_Click" Grid.Row="1" />
</Grid>

private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (!tc.IsMouseOver)
        tc.Visibility = Visibility.Collapsed;
}

0
没试过,但LostFocus事件可能是一个可行的方法,因为在显示测试控件后设置焦点。

不,LostFocus事件没有触发。我在控件外面点击了一下。 - Kirill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接