、あなたは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;
どうもありがとう、それが正常に働いています。しかし、私はまだ1つの質問があります。このコードでは、ボタンはappbordersの外に出ることができますし、彼を戻すことはできません、彼は国境の後ろに立ち往生します。これをどうやって解決するのですか?国境を設定するにはどうすればいいですか? – David
さんの倍精度高さ=(dynamic_cast(Window :: Current-> Content)) - > ActualHeight; ' Frameの現在の高さを宣言しました。ここでは、前に投稿したif構造をコード内に正確に配置していますか? –
David