Metroでドラッグ/ドロップキャンセルイベントを探している場合、これは、ユーザーがアイテムをドラッグしてドロップ可能な領域の外にドロップした場合を意味します。
どうすればこれを達成できますか、または回避策はありますか?
Metroでドラッグ/ドロップキャンセルイベントを探している場合、これは、ユーザーがアイテムをドラッグしてドロップ可能な領域の外にドロップした場合を意味します。
どうすればこれを達成できますか、または回避策はありますか?
そのようなイベントは見つかりませんでした (c#/XAML 用)! おそらく(うまくいけば)最終リリースにイベントが存在するでしょう!
一時的な回避策として、イベントに登録しましたWindow.Current.CoreWindow.PointerReleased
。
ドラッグの開始時にブール値インジケーターを true に設定し、ドラッグが終了するとPointerReleased
-event が発生し、ブール値インジケーターをテストできます。
回避策
Page (または任意の要素) のコンストラクターで、PointerReleased に登録します。
Window.Current.CoreWindow.PointerReleased+=CoreWindow_PointerReleased;
イベントハンドラーは、次のようになります。
void CoreWindow_PointerReleased(CoreWindow sender, PointerEventArgs args) {
if (m_isDragging) {
m_isDragging = false;
// Here you know that a drag-operation came to a end
}
}
そして、たとえば次のように設定できるインジケーター。
private void Entries_DragStarting(object sender, DragItemsStartingEventArgs e){
m_isDragging = true;
// ...
}
おい、ページ全体で解放されたポインターをキャプチャする代わりに、リストビューまたはドラッグしたアイテムに「ポインターキャプチャロスト」を登録できます。少なくとも、起動する回数が少ないと思います:D
listView_PointerCaptureLost(object sender, PointerRoutedEventArgs e){
//do the logic you want;
}