Bonjour,

J'ai eu un peu de mal à bien exprimer mon besoin dans le titre, désolé mais je n'ai rien trouvé de plus clair.

Voici mon problème : j'ai une combobox (une radCombobox par telerik pour être plus exact) qui contient une liste relativement longue d'éléments (50 < x < 100).
L'utilisateur peut taper la ou les premières lettres afin de se déplacer rapidement dans la sélection, mais le fait que le début de sélection soit en bas du panel le dérange.
Du coup je voudrai "remonter" mon premier élément présélectionné en haut du fameux panel.

J'ai remarqué qu'en laissant la touche appuyée, le déplacement que je recherche se fait tout seul, mais je n'ai pas trouvé le moyen de simuler ce comportement.

Ma seconde solution est donc de manipuler la scrollbar. J'arrive à récupérer mes billes mais je ne maîtrise pas du tout la logique de placement des contrôles en WPF.
Voici ce que j'ai commencé à faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
        private void cb_PreviewKeyUp(object sender, KeyEventArgs e)
        {
            if (sender != null)
            {
                RadComboBox rd = (RadComboBox)sender;
                if (rd != null) SelectHighlighted(rd);
            }
        }
 
        private void SelectHighlighted(RadComboBox rBox)
        {
            ItemContainerGenerator _iGenerator = rBox.ItemContainerGenerator;
            for (int i = 0; i < rBox.Items.Count; i++)
            {
                DependencyObject _container = _iGenerator.ContainerFromIndex(i);
                RadComboBoxItem rItem = _container as RadComboBoxItem;
 
                if (rItem != null)
                {
                    if (rItem.IsHighlighted)
                    {
                        // Je récupère le panel appartenant à ma combobox :
                        StackPanel _sPanel = _container.GetVisualParent<StackPanel>();
                        // Que mettre comme offset ?
                        _sPanel.ScrollOwner.ScrollToVerticalOffset(rItem ?);
                        return;
                    }
                }
            }
        }
Y a-t-il un moyen plus simple pour régler mon problème ?
Si non, avez-vous une idée pour récupérer l'offset vertical de mon item au moment du keyup ?

J'espère avoir été clair et merci de m'avoir lu et encore plus si vous pouviez me répondre.