J'essaie d'afficher une ligne verticale en position X du curseur. J'essaye de faire cela dans un contrôle de curseur, mais je n'ai pas pu le faire. Cela sera montré pendant que l'utilisateur a son curseur dessus. Je sais seulement que j'ai besoin de modifier le gabarit. Est-ce que c'est tellement difficile de faire ça? Si non, pouvez-vous m'aider? Merci.Comment afficher une ligne verticale sur la souris?
Répondre
Cela n'est pas facile à obtenir en utilisant un modèle parce que la position de la souris n'est pas une propriété de dépendance et que le déplacement de la souris n'est pas un événement routé. Cela revient vraiment à ce que vous voulez faire, si c'est juste pour montrer une ligne verticale si la souris est alors je suis d'accord avec Dany pour utiliser des ornements, car vous n'êtes pas vraiment intéressé par le curseur lui-même. Cependant, si c'est pour déplacer le pouce à l'endroit où se trouve la souris, j'utiliserais une propriété attachée. La raison pour laquelle j'utilise les propriétés attachées plutôt que d'accrocher les événements directement sur le contrôle est qu'il fournit une base de code plus modulaire et réutilisable et rend plus évident l'effet visuel dans le XAML, plutôt que de devoir regarder le code C# ainsi que.
Voici ce que je suggère
public class SliderHelperPackage
{
public static readonly DependencyProperty BindThumbToMouseProperty = DependencyProperty.RegisterAttached(
"BindThumbToMouse", typeof(bool), typeof(SliderHelperPackage), new PropertyMetadata(false, OnBindThumbToMouseChanged));
public static void SetBindThumbToMouse(UIElement element, bool value)
{
element.SetValue(BindThumbToMouseProperty, value);
}
public static bool GetBindThumbToMouse(UIElement element)
{
return (bool)element.GetValue(BindThumbToMouseProperty);
}
private static void OnBindThumbToMouseChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue.Equals(e.OldValue))
return;
var slider = d as Slider;
if (slider == null)
throw new ArgumentException(@"dependency object must be a slider", "d");
if ((bool) e.NewValue)
{
slider.MouseMove += SliderMouseMove;
}
else
{
slider.MouseMove -= SliderMouseMove;
}
}
static void SliderMouseMove(object sender, MouseEventArgs e)
{
var slider = (Slider) sender;
var position = e.GetPosition(slider);
// When the mouse moves, we update the slider's value so it's where the ticker is (we take into account margin's on the track)
slider.Value = (slider.Maximum - slider.Minimum)*Math.Max(position.X-5,0)/(slider.ActualWidth-10) + slider.Minimum;
}
}
Et vous pouvez alors l'utiliser dans votre XAML comme si. Ainsi, lorsque vous réglez ce paramètre vrai que nous accrochons à l'événement de déplacement de la souris sur le curseur et changer sa valeur si le pouce suit la souris
<Slider SliderPosn:SliderHelperPackage.BindThumbToMouse="True" Margin="5" Height="25" VerticalAlignment="Top"/>
http://www.codeproject.com/KB/WPF/adornedcontrol.aspx
cette référence devrait vous donner toutes les informations nécessaires pour résoudre votre problème
acclamations!
Seules les réponses de lien ne sont pas de bonnes réponses. Si le lien devient vicié alors la réponse devient inutile. Pouvez-vous ajouter suffisamment d'informations à la réponse pour que le PO puisse décider si le lien mérite d'être suivi ou non. – ChrisF
- 1. Comment afficher les zones de texte dans une ligne verticale
- 2. Comment afficher une image près de la souris lorsque cliquez sur la ligne
- 3. Comment afficher un rectangle sur la souris?
- 4. info-bulle du flot sur la ligne verticale imaginaire
- 5. ligne blanche verticale sur éclipse
- 6. comment afficher la navigation verticale dans magento
- 7. comment dessiner une ligne verticale dynamiquement?
- 8. Comment tracer une ligne verticale en octave?
- 9. comment dessiner une ligne verticale dans UIScrollView
- 10. Pourquoi ai-je une ligne verticale sur la barre d'outils?
- 11. Afficher/Masquer DIV sur la souris sur
- 12. Comment dessiner la ligne verticale dans ASP.Net?
- 13. Dessinez une ligne verticale sur le clic gauche MouseDownEvent
- 14. Comment créer l'ombre efffect sur la ligne verticale
- 15. dygraph ligne verticale
- 16. Comment afficher la liste UL verticale?
- 17. Comment changer la ligne verticale de Label?
- 18. Comment afficher une ligne verticale entre les colonnes d'une disposition de la grille dans Android
- 19. ligne verticale sur un graphique à barres
- 20. EditText avec ligne verticale
- 21. Ligne verticale dans NSTextView
- 22. réagissent bouton Afficher sur la souris entrer
- 23. Netbeans 6.9 ligne verticale sur l'écran
- 24. Afficher Zend_Form_Element_Radio sur une ligne
- 25. Comment puis-je afficher des informations lorsque je souris sur une ligne de graphique dans Flex?
- 26. Ligne verticale dynamique
- 27. Comment afficher une info-bulle sur un clic de souris
- 28. Afficher la flèche active onclick (Navigation verticale?)
- 29. texte d'écriture Centrer verticalement sur une ligne verticale
- 30. comment puis-je afficher l'infobulle ou l'information sur une souris?
double possible d'une fraction de ce que ce gars-là (questionneur) fait .. http://stackoverflow.com/questions/7764421/onmousemove-does-not-fire-on-canvas-in-wpf/7766111#7766111 –