Reputation: 459
I display TestControl in grid when user clicks on the button:
<Grid>
<myControls:TestControl Panel.ZIndex="2" Visibility="Collapsed" Width="100" Height="100" />
<Button "Open Test Control" Click="btnOpen_Click" />
</Grid>
How can I hide TestControl when user clicks outside this control?
Upvotes: 4
Views: 2498
Reputation: 169420
You could handle the PreviewMouseLeftButtonDown
event for the Grid
:
<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;
}
Upvotes: 4
Reputation: 2946
Haven't tried it, but LostFocus event may be a way to go, given that you set focus to your test control after showing it.
Upvotes: 0