WPF Thumb拖动行为错误

时间:2014-10-10 11:30:21

标签: c# wpf

我在WPF中创建了一个拇指。我使用DragDelta事件通过鼠标单击并拖动来更改值。

这是我的DragDelta代码:

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
    MyValue = e.VerticalChange;
}

这样可以正常工作,但是,再次单击我的按钮时,值会从我单击的位置开始(0)。我需要单击并拖动来更改相对于原始值的值。所以我尝试了这个:

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
    MyValue += e.VerticalChange;
}

这样可行但是当我向下拖动然后再向上移动时,即使我将鼠标向上移动,该值也会继续下降。向上移动鼠标(值增加),然后向下移动鼠标(值不断增加)时也是如此。

1 个答案:

答案 0 :(得分:0)

这是它的工作原理:

double minLeft = double.MaxValue;
double minTop = double.MaxValue;
double left = Canvas.GetLeft(item);
double top = Canvas.GetTop(item);

minLeft = double.IsNaN(left) ? 0 : Math.Min(left, minLeft);
minTop = double.IsNaN(top) ? 0 : Math.Min(top, minTop);

double deltaHorizontal = Math.Max(-minLeft, e.HorizontalChange);
double deltaVertical = Math.Max(-minTop, e.VerticalChange);

用画布替换容器控件。