Всплывающее окно wpf не закрывается автоматически, когда сетка данных внутри всплывающего окна захватывает мышь

У меня есть всплывающее окно с 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 , чтобы вернуть мышь всплывающим окном, но, похоже, это не так просто. Есть идеи?

14
задан Snowbear 27 April 2011 в 19:20
поделиться