public override void OnApplyTemplate() { _textBlock = (TextBlock)Template.FindName("TextBlock", this); var originalPosition = new Point(); double originalValue = 0; var mouseMoved = false; _textBlock.MouseDown += (sender, e) => { originalPosition = e.GetPosition(_textBlock); originalValue = Value; _textBlock.CaptureMouse(); mouseMoved = false; }; _textBlock.MouseMove += (sender, e) => { if (!_textBlock.IsMouseCaptured) { return; } mouseMoved = true; var newPosition = e.GetPosition(_textBlock); Value = CoerceValue(originalValue + (newPosition.X - originalPosition.X) / 50.0); }; _textBlock.MouseUp += (sender, e) => { if (_textBlock.IsMouseCaptured) { _textBlock.ReleaseMouseCapture(); } if (!mouseMoved) { Mode = NumericTextBoxMode.TextBox; _textBox.SelectAll(); _textBox.Focus(); } }; _textBox = (TextBox)Template.FindName("TextBox", this); _textBox.KeyUp += (sender, e) => { if (e.Key == Key.Escape || e.Key == Key.Enter) { Mode = NumericTextBoxMode.Normal; } }; _textBox.LostFocus += (sender, e) => Mode = NumericTextBoxMode.Normal; base.OnApplyTemplate(); }
public override void OnApplyTemplate() { _textBlock = (TextBlock)Template.FindName("TextBlock", this); var originalPosition = new System.Drawing.Point(); var mouseMoved = false; _textBlock.MouseDown += (sender, e) => { originalPosition = System.Windows.Forms.Cursor.Position; _textBlock.CaptureMouse(); Mouse.OverrideCursor = Cursors.None; mouseMoved = false; }; _textBlock.MouseMove += (sender, e) => { if (!_textBlock.IsMouseCaptured) { return; } mouseMoved = true; var newPosition = System.Windows.Forms.Cursor.Position; Value = CoerceValue(Value + (newPosition.X - originalPosition.X) / 50.0); System.Windows.Forms.Cursor.Position = originalPosition; }; _textBlock.MouseUp += (sender, e) => { Mouse.OverrideCursor = null; _textBlock.ReleaseMouseCapture(); if (!mouseMoved) { Mode = NumericTextBoxMode.TextBox; _textBox.SelectAll(); _textBox.Focus(); } }; _textBox = (TextBox)Template.FindName("TextBox", this); _textBox.KeyUp += (sender, e) => { if (e.Key == Key.Escape || e.Key == Key.Enter) { Mode = NumericTextBoxMode.Normal; } }; _textBox.LostFocus += (sender, e) => Mode = NumericTextBoxMode.Normal; base.OnApplyTemplate(); }
public override void OnApplyTemplate() { _textBlock = (TextBlock) Template.FindName("TextBlock", this); var originalPosition = new Point(); double originalValue = 0; var mouseMoved = false; _textBlock.MouseDown += (sender, e) => { originalPosition = e.GetPosition(_textBlock); originalValue = Value; _textBlock.CaptureMouse(); mouseMoved = false; }; _textBlock.MouseMove += (sender, e) => { if (!_textBlock.IsMouseCaptured) return; mouseMoved = true; var newPosition = e.GetPosition(_textBlock); Value = CoerceValue(originalValue + (newPosition.X - originalPosition.X)/50.0); }; _textBlock.MouseUp += (sender, e) => { if (_textBlock.IsMouseCaptured) _textBlock.ReleaseMouseCapture(); if (!mouseMoved) { Mode = NumericTextBoxMode.TextBox; _textBox.SelectAll(); _textBox.Focus(); } }; _textBox = (TextBox) Template.FindName("TextBox", this); _textBox.KeyUp += (sender, e) => { if (e.Key == Key.Escape || e.Key == Key.Enter) Mode = NumericTextBoxMode.Normal; }; _textBox.LostFocus += (sender, e) => Mode = NumericTextBoxMode.Normal; base.OnApplyTemplate(); }