Ho un controllo che utilizza un popup con alcuni controlli WPF al suo interno e StaysOpen = "True". Il problema è quando si fa clic sul popup quando l'applicazione non ha lo stato attivo, l'applicazione non riceve lo stato attivo. Ho fatto un po 'di ricerche, e sembra che questo potrebbe essere dovuto al fatto che i popup sono pensati per essere usati per i menu, quindi non hanno tutti i gestori di messaggi Windows appropriati collegati. Ecco un esempio barebone per provare le canzoni del problema:WPF Popup non causa la messa a fuoco dell'applicazione quando si fa clic su
<Window x:Class="TestWindowPopupBehavior.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:TestWindowPopupBehavior="clr-namespace:TestWindowPopupBehavior" Title="MainWindow" Height="350" Width="525">
<Grid>
<Popup StaysOpen="True" IsOpen="True" Placement="Center">
<ListBox>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
</ListBox>
</Popup>
</Grid>
</Window>
- eseguire l'applicazione.
- Interagire con la casella di riepilogo, che dovrebbe funzionare correttamente.
- Passare a un'altra applicazione.
- Fare clic sulla casella di riepilogo mentre l'applicazione non è attiva. Non succede nulla
- Fare clic sull'applicazione all'esterno della casella di riepilogo.
- Fare clic sulla casella di riepilogo. Funziona ora.
Quello che mi aspetto di accadere nel passaggio 4 sarebbe che l'applicazione avrebbe ricevuto lo stato attivo e la casella di riepilogo selezionerebbe il nuovo elemento.
Esistono soluzioni alternative a questo problema o qualcosa di ovvio mi manca? Sto cercando di riscrivere l'intero codice popup con finestre a tutti gli effetti, e di ri-implementare il comportamento che abbiamo, ma questo sembra davvero complicato solo per risolvere un piccolo problema come questo.
Dovrebbe essere sufficiente utilizzare gli eventi del mouse Anteprima ... per intercettarlo sul pop-up senza dover aggiungere altri gestori per il suo contenuto. – Paul
Ha funzionato usando PreviewXXX per me. – FryGuy
Ragazzi, siete più specifici riguardo all'anteprima? Mi sembra di avere lo stesso problema. –