Voglio mostrare una selezione in un TextBox WPF anche quando non è a fuoco. Come posso fare questo?Come mantenere la selezione TextBox WPF quando non è focalizzata?
risposta
Ho usato questa soluzione per un RichTextBox, ma presumo che funzionerà anche per una casella di testo standard. Fondamentalmente, è necessario gestire l'evento LostFocus e contrassegnarlo come gestito.
protected void MyTextBox_LostFocus(object sender, RoutedEventArgs e)
{
// When the RichTextBox loses focus the user can no longer see the selection.
// This is a hack to make the RichTextBox think it did not lose focus.
e.Handled = true;
}
Il TextBox non si accorgerà di aver perso la messa a fuoco e mostrerà comunque la selezione evidenziata.
In questo caso non sto utilizzando il binding dei dati, quindi potrebbe essere possibile che questo danneggi il binding a due vie. Potrebbe essere necessario forzare l'associazione nel gestore di eventi LostFocus. Qualcosa di simile a questo:
Binding binding = BindingOperations.GetBinding(this, TextProperty);
if (binding.UpdateSourceTrigger == UpdateSourceTrigger.Default ||
binding.UpdateSourceTrigger == UpdateSourceTrigger.LostFocus)
{
BindingOperations.GetBindingExpression(this, TextProperty).UpdateSource();
}
Un'altra opzione è quella di definire un ambito attenzione separata in XAML per mantenere la selezione nella prima TextBox.
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Text="Text that does not loose selection."/>
<StackPanel Grid.Row="1" FocusManager.IsFocusScope="True">
<TextBox Text="Some more text here." />
<Button Content="Run" />
<Button Content="Review" />
</StackPanel>
</Grid>
public class CustomRichTextBox : RichTextBox
{
protected override void OnLostFocus(RoutedEventArgs e)
{
}
}
ho scoperto che i suggerimenti elencati (aggiungere un gestore LostFocus, la definizione di un FocusScope) a non funzionare, ma ho incontrato il codice elencato qui: http://naracea.com/2011/06/26/selection-highlight-and-focus-on-wpf-textbox/, che crea un Adorner personalizzato che mette in evidenza la testo quando non focalizzato.
- 1. WPF TextBox Border quando selezionato?
- 2. In Unity3D è possibile mantenere la vista Scena focalizzata quando si tocca Play?
- 3. Come disattivare la selezione su un TextBox
- 4. multilinea per WPF TextBox
- 5. TextBox WPF non compila StackPanel
- 6. TextBox - Posso mantenere l'evidenziazione della selezione quando perde lo stato attivo?
- 7. wpf textbox textboxing
- 8. WPF TextBox Wrapping
- 9. Selezione di un ListBoxItem quando il suo ComboBox interna è focalizzata
- 10. problema multilinea WPF TextBox
- 11. wpf textbox text binding
- 12. ValidationRule per WPF TextBox
- 13. selezione ListBoxItem a fuoco TextBox
- 14. WPF TextBox Stretching
- 15. Come creare un commutatore pass-through TextBox WPF TextBox?
- 16. Come forzare un evento TextChanged su un TextBox WPF e mantenere l'attenzione?
- 17. WPF: TextBox con ProgressBar
- 18. Come ottenere la cella focalizzata in JTable durante la selezione multipla
- 19. WPF: OnKeyDown() non venga richiamato per la chiave spazio nel controllo derivato da WPF TextBox
- 20. Numeric TextBox in C# - WPF
- 21. WPF TextBox che intercetta RoutedUICommands
- 22. Come disattivare le scorciatoie in WPF TextBox
- 23. Intellisense supportato TextBox in WPf
- 24. Nascondi cursore in WPF TextBox
- 25. WPF TextBox che non accetta Input quando si trova in ElementHost in Window Form
- 26. Come mantenere l'attenzione su un'applicazione desktop WPF?
- 27. Colore selezione ListBox WPF
- 28. Differenza tra Textbox e RichTextbox wpf?
- 29. Cancellare programmaticamente la selezione in WPF ComboBox
- 30. Un ComboBox WPF può visualizzare testo alternativo quando la sua selezione è nulla?
Questo ha funzionato! Grazie! –
+1 Soluzione piacevole - mi ha aiutato con la creazione di una funzione di ricerca ... Thx – reSPAWNed
Questo funziona principalmente, ma si interrompe scorrendo su RichTextBox non focalizzati con selezioni in essi - l'evidenziazione della selezione non si sposta con il testo. – Cameron