我在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;
}
这样可行但是当我向下拖动然后再向上移动时,即使我将鼠标向上移动,该值也会继续下降。向上移动鼠标(值增加),然后向下移动鼠标(值不断增加)时也是如此。
答案 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);
用画布替换容器控件。