我正在开发Windows Phone 8.1应用程序。我有一个usercontrol,我有相同的控件注册manipdelta事件处理程序。 我控制的问题是
我拖动时超出了屏幕限制。
如果我对其设置了一些限制,那么它也会超过右边和下边的屏幕限制。
double scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
void control_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
//transform.TranslateX += e.Delta.Translation.X;
//transform.TranslateY += e.Delta.Translation.Y;
transform.TranslateX = limit(transform.TranslateX + e.Delta.Translation.X, 0, Window.Current.Bounds.Width * scaleFactor);
transform.TranslateY = limit(transform.TranslateY + e.Delta.Translation.Y, 0, Window.Current.Bounds.Height * scaleFactor);
}
double limit(double value, double min, double max)
{
if (value > max) return max;
else if (value < min) return min;
else return value;
}
我想仅限制设备屏幕内的控制拖动/操控。
答案 0 :(得分:0)
您需要考虑控件的大小。换句话说,你必须从Window的宽度中减去控件的宽度,并从Window的高度中减去控件的高度。
顺便说一下,比例因子不是必需的,因为所有的测量都已经在&#34; Universal&#34;像素。
transform.TranslateX = limit(transform.TranslateX + e.Delta.Translation.X, 0, Window.Current.Bounds.Width - this.ActualWidth);
transform.TranslateY = limit(transform.TranslateY + e.Delta.Translation.Y, 0, Window.Current.Bounds.Height - this.ActualHeight);