J'essaie simplement de trouver un moyen d'obtenir le pouce d'un curseur dans WPF, quelque chose comme: 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. P> merci! P> p>
3 Réponses :
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;
}
Curseur code>
a un templatePartatTribute code>
qui déclare qu'il devrait avoir une partie de modèle appelée partie_track code> de type
piste code>
. La piste code> code> peut nous faire référence au orth thumb code>. Gardez à l'esprit qu'il est possible de donner au curseur code> un modèle avec no piste code>, auquel cas il n'y aura pas de
thumb code>.
Dans mon cas, Slider.Template == null, que dois-je faire maintenant?
Toute solution lorsque le modèle est NULL pour le curseur?
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 code> étant
null code>, vous pouvez faire quelque chose comme ceci:
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. :)