0

我已經添加了Popup控件,它綁定了WPF中MainWindow.xmal文件上切換按鈕的放置目標。切換按鈕的IsChecked屬性與Popup控件的IsOpen屬性綁定在同步行爲中。 當我們運行並最大化主窗口的應用程序時,點擊切換按鈕。它會打開流行音樂控制。直到這一點,這是正常的行爲。 但是,當我們用Shift + Tab按鈕切換到另一個窗口時,Popup控件仍處於打開狀態。它應該是運行應用程序的一部分。它應該在MainWindow的後臺。但它出現在突出顯示的應用程序的前窗上。WPF應用程序中的Pop控件行爲不正確?

<Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="*"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions > 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Popup Name="popCntrl" AllowsTransparency="True" Placement="Left" PlacementTarget="{Binding ElementName=btnToggle}" > 
       <Border BorderBrush="AliceBlue" BorderThickness="1"> 
        <StackPanel Width="200" Height="150" Background="Aqua"> 
         <TextBlock Text=" This is Pop up window content. Should be part of running application"/> 
        </StackPanel> 
       </Border> 
      </Popup> 
      <ToggleButton Grid.RowSpan="2" Name="btnToggle" Height="20" Width="60" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" 
          IsChecked="{Binding ElementName=popCntrl ,Path=IsOpen, UpdateSourceTrigger=PropertyChanged}" BorderBrush="Black" BorderThickness="2" Background="Brown" /> 

    </Grid> 

enter image description here

回答

0

我想你需要的是對PopupStaysOpen屬性設置爲false。當你設置它時,彈出框在失去焦點時會自動關閉。

MSDN

當StaysOpen屬性設置爲true,彈出窗口保持打開狀態,直到它 明確由IsOpen屬性設置爲false關閉。當 StaysOpen爲false時,Popup控件攔截所有鼠標和鍵盤事件,以確定這些事件之一何時發生在彈出控件的 之外。

+0

是的,如果我們將StayOpen屬性設置爲true,那肯定會起作用。但當窗口再次通過Alt + Tab激活時,彈出窗口不會處於打開狀態。用戶必須再次單擊才能打開它。所以這是一種不需要的行爲。 – AmitC

+0

我想,你必須自己做一些關注管理。一旦你把焦點重新回到你的窗戶,你可能不得不重新設置Popup的打開/關閉狀態。 – sthotakura

相關問題