У меня есть всплывающее окно с StaysOpen=False
, поэтому я хочу закрыть его, щелкнув везде вне всплывающего окна. Внутри всплывающего окна есть DataGrid
. Если я открою всплывающее окно, а затем щелкните в другом месте, всплывающее окно будет закрыто. Но этого не произойдет, если перед щелчком вне всплывающего окна я нажму на заголовок столбца в DataGrid
. Тест XAML:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Black">
<Grid>
<ToggleButton x:Name="btn" VerticalAlignment="Top">Open</ToggleButton>
<Popup StaysOpen="False" IsOpen="{Binding IsChecked, ElementName=btn}" >
<DataGrid Width="150" Height="150">
<DataGrid.Columns>
<DataGridTextColumn Header="Column" />
</DataGrid.Columns>
</DataGrid>
</Popup>
</Grid>
</Window>
Я думаю, что это происходит потому, что заголовок столбца захватывает мышь при щелчке, а всплывающее окно больше не принимает события мыши. Я попытался добавить обработчик на событие LostMouseCapture
, чтобы захватить мышь назад всплывающим меню, но, похоже, это не так просто. Любые идеи?