0

Я добавил в элемент управления Popup, который привязан к цели размещения кнопки Toggle в файле MainWindow.xmal в WPF. Свойство IsChecked кнопки Toggle привязано к свойству IsOpen элемента управления Popup для синхронизации. Когда мы запускаем и максимизируем 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

Я думаю, что вам нужно, это установить StaysOpen свойство на Popup в false. Когда вы установите это, всплывающее окно закроется, когда оно потеряет фокус.

От MSDN:

Когда свойство StaysOpen устанавливается истина, Popup остается открытым до тех пор, явно не закрыт, установив IsOpen свойство ложно. Когда StaysOpen является ложным, элемент управления Popup перехватывает все мыши и события клавиатуры , чтобы определить, когда одно из этих событий происходит за пределами управления всплывающим окном.

+0

Да, это определенно работает, если мы установим свойство StayOpen в true. Но Когда окно снова активируется с помощью Alt + Tab, pop не будет в открытом состоянии. Пользователь должен снова щелкнуть, чтобы открыть его. Так что это своего рода нежелательное поведение. – AmitC

+0

Думаю, вам придется немного поработать над собой. Как только вы вернете фокус обратно в свои окна, вам может потребоваться повторно установить статус «открыто/закрыто» во всплывающем окне. – sthotakura