2016-01-11 208 views
2

這裏是XAML打開彈出窗口的代碼IsChecked btnViewDetail,我需要關閉彈出窗口的彈出側。如何關閉彈出窗口當我在彈出窗口外單擊

<Popup IsOpen="{Binding IsChecked, ElementName=btnViewDetail}" PopupAnimation="Fade" Width="300" Height="225" PlacementTarget="{Binding ElementName=svTotalStock}" Placement="Top" StaysOpen="False"> 
    <Grid Background="Black"> 
     <TextBlock TextWrapping="Wrap" Text="Raw Materials details" 
        VerticalAlignment="Top" Height="25" FontFamily="Segoe UI Semibold" 
        Padding="7,6,0,0" FontWeight="Bold" FontSize="14" Foreground="White" 
        Margin="0,2,59,0"/> 
     <Border BorderThickness="1" BorderBrush="Black"/> 
    </Grid> 
</Popup> 
<Grid> 
    <Grid.ContextMenu> 
     <ContextMenu> 
      <MenuItem IsCheckable="True" Name="btnViewDetail" Header="View Details"/> 
     </ContextMenu> 
    </Grid.ContextMenu> 
</Grid> 
+0

我想知道爲什麼'StaysOpen =「False」'不起作用? – Tyress

+1

注意用戶控制時StaysOpen =「False」正常工作。 – Sam

回答

4

如果StaysOpen財產無法處理你的情況,你必須對你的窗口捕捉MouseDown事件,當您的容器元素(在你的情況,Grid)具有Focusable="True"

private void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) 
{ 
    gridContainer.Focus(); 
} 
1

有兩個屬性你有分配:

StaysOpen = false

當StaysO筆屬性設置爲true,Popup保持打開狀態,直到通過將IsOpen屬性設置爲false顯式關閉。當StaysOpen爲false時,Popup控件攔截所有鼠標和鍵盤事件,以確定這些事件之一何時發生在Popup控件之外。其中U希望TP打開彈出式,定義一個EventTrigger上UIElement.LostMouseCapture設置彈出StaysOpen = false的彈出窗口的IsOpen = true;

1

屬性來完成這個工作的其他用戶控制Focusable = false

然後:

接下來,設置彈出的孩子。

相關問題