0

WPFのMainWindow.xmalファイルのToggleボタンの配置先にバインドされたPopupコントロールに追加しました。 ToggleボタンのIsCheckedプロパティは、PopupコントロールのIsOpenプロパティとバインドされ、同期動作を行います。 アプリケーションのMainWindowを実行して最大化するときは、トグルボタンをクリックします。ポップコントロールが開きます。この点までは正常な動作です。 しかし、Shift + Tabボタンで別のウィンドウに切り替えると、ポップアップコントロールはまだ開いています。実行中のアプリケーションの一部である必要があります。 MainWindowをバックグラウンドにする必要があります。しかし、ハイライトされたアプリケーションのフロントウィンドウに表示されます。WPFアプリケーションでポップコントロールの動作が正しくありませんか?

<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

私は何が必要だと思うfalseからPopupStaysOpenプロパティを設定することです。これを設定すると、フォーカスが失われたときにポップアップが閉じます。 MSDNから

StaysOpenプロパティをtrueに設定すると、ポップアップがそれまで開いたまま が明示的にfalseにのIsOpenプロパティを設定することで閉じられています。 StaysOpenがfalseの場合、ポップアップコントロールはすべてのマウスと キーボードイベントをインターセプトして、ポップアップコントロール の外部にこれらのイベントのいずれが発生したかを判断します。

+0

はい、StayOpenプロパティをtrueに設定すると、間違いなく機能します。しかし、Alt + Tabでウィンドウを再度アクティブにすると、ポップは開いた状態にはなりません。ユーザーがもう一度クリックすると開く必要があります。これは望ましくない動作のようなものです。 – AmitC

+0

私は、自分で少し集中管理をしなければならないと思います。あなたのウィンドウにフォーカスが戻ったら、ポップアップで開いた/閉じた状態を再設定する必要があります。 – sthotakura

関連する問題