7
votes

Obtenez le pouce d'un curseur

J'essaie simplement de trouver un moyen d'obtenir le pouce d'un curseur dans WPF, quelque chose comme: xxx

maintenant je sais que ce n'est pas possible aussi simple que ceci; Mais il doit y avoir un travail autour de cela. Faites-moi savoir si vous connaissez n'importe lequel.

merci!


0 commentaires

3 Réponses :


2
votes

a trouvé la solution par moi-même, avec un peu d'aide du VisualTeheHelper code>. Toute optimisation grandement appréciée:

private Thumb Thumb
{
    get
    {
        return GetThumb(this /* the slider */ ) as Thumb;;
    }
}

private DependencyObject GetThumb(DependencyObject root)
{
    if (root is Thumb)
        return root;

    DependencyObject thumb = null;

    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(root); i++)
    {
        thumb = GetThumb(VisualTreeHelper.GetChild(root, i));

        if (thumb is Thumb)
            return thumb;
    }

    return thumb;
}


0 commentaires

12
votes

Curseur a un templatePartatTribute qui déclare qu'il devrait avoir une partie de modèle appelée partie_track de type piste . La piste peut nous faire référence au orth thumb . Gardez à l'esprit qu'il est possible de donner au curseur un modèle avec no piste , auquel cas il n'y aura pas de thumb . xxx


2 commentaires

Dans mon cas, Slider.Template == null, que dois-je faire maintenant?


Toute solution lorsque le modèle est NULL pour le curseur?



3
votes

Si vous souhaitez simplement ajouter un gestionnaire d'événements au pouce et ne voulez pas attendre ou forcer le rendu pour éviter slider.template étant null , vous pouvez faire quelque chose comme ceci: xxx


1 commentaires

Cela fonctionne bien dans OnApplyTemplate d'un contrôle personnalisé contenant le curseur. Tout ce que j'ai essayé avec les événements de la souris s'applique à l'ensemble du contrôle personnalisé - pas seulement du curseur. :)