5 using System.Windows.Controls;
6 using System.Windows.Controls.Primitives;
7 using System.Windows.Input;
8 using System.Windows.Interactivity;
10 using SiliconStudio.Presentation.Extensions;
12 namespace SiliconStudio.Presentation.Behaviors
16 private bool trackMouseDown;
22 AssociatedObject.AddHandler(UIElement.PreviewMouseLeftButtonDownEvent, (MouseButtonEventHandler)TrackMouseEvent,
true);
23 AssociatedObject.AddHandler(UIElement.PreviewMouseLeftButtonUpEvent, (MouseButtonEventHandler)TrackMouseEvent,
true);
24 AssociatedObject.Initialized += SliderInitialized;
29 AssociatedObject.Initialized -= SliderInitialized;
30 AssociatedObject.RemoveHandler(UIElement.PreviewMouseLeftButtonDownEvent, (MouseButtonEventHandler)TrackMouseEvent);
31 AssociatedObject.RemoveHandler(UIElement.PreviewMouseLeftButtonUpEvent, (MouseButtonEventHandler)TrackMouseEvent);
32 if (track != null && track.Thumb != null)
34 track.Thumb.MouseEnter -= MouseEnter;
39 private void SliderInitialized(
object sender,
EventArgs e)
41 AssociatedObject.ApplyTemplate();
43 track = AssociatedObject.FindVisualChildOfType<Track>();
44 if (track == null || track.Name !=
"PART_Track")
45 throw new InvalidOperationException(
"The associated slider must have a Track child named 'PART_Track'");
46 track.Thumb.MouseEnter += MouseEnter;
47 AssociatedObject.Initialized += SliderInitialized;
50 private void TrackMouseEvent(
object sender, MouseButtonEventArgs e)
53 trackMouseDown = e.ButtonState == MouseButtonState.Pressed;
56 private void MouseEnter(
object sender, MouseEventArgs e)
60 var args =
new MouseButtonEventArgs(e.MouseDevice, e.Timestamp,
MouseButton.Left) { RoutedEvent = UIElement.MouseLeftButtonDownEvent };
61 track.Thumb.RaiseEvent(args);
62 trackMouseDown =
false;
override void OnAttached()
override void OnDetaching()