J'ai un TextBox qui fait un SelectAll() quand il obtient le focus. Fonctionne très bien. Le problème est que si le contenu ne rentre pas dans la boîte, alors le SelectAll entraîne le défilement du contenu jusqu'à la fin. Je veux qu'il défile vers l'avant à la place - cette boîte est utilisée avec des champs numériques.Comment empêcher le défilement de la boîte d'édition WPF de se terminer sur un SelectAll programmatique?
Ma question est: est-il possible de SelectAll() mais éviter le défilement?
La solution de contournement que j'ai en ce moment est de mettre en file d'attente un ScrollToHome. Je n'apprécie pas trop cela car il provoque parfois une pop comme le texte rend dans une position puis une autre.
public new void SelectAll()
{
base.SelectAll();
// changing selection does something with a queued scroll request, so have to queue ours in the back. this still may cause a flash
// if a render slips through. would like to find a better way to do this.
Dispatcher.BeginInvoke(DispatcherPriority.Background, ScrollToHome);
}
Notez que le ScrollToHome doit être mis en attente comme celui-ci ou il obtient « écrasé » en raison d'une autre file d'attente event..I'm deviner un événement changé notify-interne au système de zone de texte. J'ai fouillé dans la source et c'est assez compliqué, j'ai eu du mal à comprendre exactement où il faisait sa demande de défilement.
Donc ce que je suis à la recherche est une des opérations suivantes:
- Comment selectall() sans défilement se produisant ou avec elle le défilement vers l'avant.
- Comment forcer une mise à jour à l'affichage pour que je ne reçoive pas le popping.
J'ai oublié le début/la fin. Cela l'a corrigé exactement, merci! – scobi