为了您的需求,您可以通过使用ManipulationDelta
类移动在纵轴上的按钮。你可以用下面的代码来实现它。 更多请参考Handle pointer input。这里是official code样本。
MainPage::MainPage()
{
InitializeComponent();
InitManipulationTransforms();
btnMove->ManipulationDelta += ref new ManipulationDeltaEventHandler(this, &MainPage::btnMove_ManipulationDelta);
btnMove->ManipulationMode = ManipulationModes::TranslateX;
}
void App14::MainPage::InitManipulationTransforms()
{
transforms = ref new TransformGroup();
previousTransform = ref new MatrixTransform();
previousTransform->Matrix = Matrix::Identity;
deltaTransform = ref new CompositeTransform();
transforms->Children->Append(previousTransform);
transforms->Children->Append(deltaTransform);
// Set the render transform on the rect
btnMove->RenderTransform = transforms;
}
void App14::MainPage::btnMove_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
}
void MainPage::btnMove_ManipulationDelta(Platform::Object^ sender, ManipulationDeltaRoutedEventArgs^ e)
{
previousTransform->Matrix = transforms->Value;
// Get center point for rotation
Point center = previousTransform->TransformPoint(Point(e->Position.X, e->Position.Y));
deltaTransform->CenterX = center.X;
deltaTransform->CenterY = center.Y;
// Look at the Delta property of the ManipulationDeltaRoutedEventArgs to retrieve
// the rotation, scale, X, and Y changes
deltaTransform->Rotation = e->Delta.Rotation;
deltaTransform->TranslateX = e->Delta.Translation.X;
deltaTransform->TranslateY = e->Delta.Translation.Y;
}
你可以通过修改按钮ManipulationMode
更改按钮的滚动方向。
btnMove->ManipulationMode = ManipulationModes::TranslateY;
非常感谢,这是工作的罚款。但我仍然有一个问题。有了这段代码,按钮就可以脱离实体边界,然后你就不能让他回来,他会在边界后面打勾。我该如何解决 ?我如何设置边界? – David
willouble height =(dynamic_cast(Window :: Current-> Content)) - > ActualHeight; ' 我声明了框架的当前高度,在代码中的确切位置是否放置了之前发布的if结构? –
David