Sto vedendo un comportamento strano quando si tratta di messa a fuoco e navigazione da tastiera. Nell'esempio seguente ho un oggetto ItemsControl semplice che è stato creato in modo che mostri un elenco di CheckBox associati a ItemsSource.Strani comportamenti di messa a fuoco per semplici oggetti WPFControllo
<ItemsControl FocusManager.IsFocusScope="True"
ItemsSource="{Binding ElementName=TheWindow, Path=ListOStrings}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Per qualche strana ragione la FocusManager.IsFocusScope = "True" assegnazione provoca fuoco della tastiera per non essere impostato quando il controllo di una casella di controllo tramite un clic del mouse e per la messa a fuoco per saltare fuori della ItemsControl quando un controllo casella viene controllata utilizzando la barra spaziatrice sulla tastiera. Entrambi i sintomi sembrano indicare qualche strano evento di navigazione quando la casella di controllo è selezionata, ma mi viene difficile trovare il fondo.
Questo problema si verifica se imposto alcun elemento padre sull'albero visivo come ambito di attivazione utilizzando questo metodo. Se rimuovo lo FocusManager.IsFocusScope = "True", i problemi scompaiono. Sfortunatamente sto vedendo questo problema in un progetto più ampio in cui non posso semplicemente rimuovere questi ambiti di messa a fuoco senza preoccuparmi di altre conseguenze legate alla messa a fuoco.
Qualcuno potrebbe spiegarmi lo strano comportamento che sto vedendo? È un bug o mi manca qualcosa?
+1 per una spiegazione del problema. Ho appena aggiunto l'implementazione del comportamento allegato IsEnhancedFocusScope. –
L'unica cosa che ancora non capisco data questa spiegazione è che se prendo un altro esempio in cui ho impostato una griglia per essere l'ambito di messa a fuoco con un gruppo di bambini che sono pulsanti e caselle di controllo, quando faccio clic su uno di questi caselle di controllo Non vedo la strana perdita di comportamento di messa a fuoco che vedo nel mio ItemsControl. Perché questo sembra influenzare solo le checkbox all'interno di ItemsControl, è qualcosa che ha a che fare con ScrollViewer, ItemsPresenter, ...? – jpierson