我有一個彈出窗口,其中包含StaysOpen=False
,所以我想通過單擊彈出窗口以外的任何地方關閉它。在彈出窗口中,我有一個DataGrid
。如果我打開彈出窗口,然後單擊其他地方彈出窗口將被關閉。但是,如果在點擊彈出窗口之前我不會點擊DataGrid
中的列標題。測試XAML:當彈出窗口中的datagrid捕獲鼠標時,wpf彈出窗口不會自動關閉
<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
事件中添加一個處理程序,以便通過彈出窗口捕獲鼠標,但它似乎並不那麼容易。有任何想法嗎?
這個工程......應標記爲答案:) – user589195 2013-10-16 09:29:46