1

私の問題は、アイテムのリストを含む非常に単純なリストボックスがあることです。MainPage_Loaded イベントから ScrollViewer を無効にすると、Listbox を任意の方向に斜めにスワイプすることで、ScrollViewer を再度有効にできることに気付きました。

XAML からプロパティを設定しようとしました:

<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" ...../>

私もコードからそれをやろうとしました:

var myScrollviewer = VisualTreeHelper.GetChild(MyListBox, 0) as ScrollViewer;
myScrollviewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
myScrollviewer.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled;

垂直方向と水平方向のまっすぐなスワイプは、ScrollViewer が無効になっていることを示していますが、画面から手を離さずに斜めにスワイプすると、リストボックス内の項目が上下にスクロールし始めます。この動作はバグのようです。

誰かがスクロールビューアを完全に無効にして、斜めにスワイプしてもスクロールビューアが一時的に再度有効にならないようにする方法を教えてもらえますか?

この動作は、スクロールビューアが無効になっているときにアイテムをドラッグするという下線のタスクに影響を与えています。

ありがとう

4

1 に答える 1

1

面白いですね、今まで気がつきませんでした。これはバグかもしれませんが、これを回避するには、ScrollViewer のManipulationModeプロパティをに設定Controlして、システムに処理させるのではなく、コントロール レベルで ScrollViewer を処理することを OS に知らせてください。

<ListBox ScrollViewer.ManipulationMode="Control" 
         ScrollViewer.VerticalScrollBarVisibility="Disabled"
         ScrollViewer.HorizontalScrollBarVisibility="Disabled" .../>

ただし、再度有効にする場合は、スクロールをスムーズにするためにManipulationMode背面をに設定してください。System

コメントに基づいて更新

スクロールビューアを再度有効にするには、これを行います

var myScrollviewer = VisualTreeHelper.GetChild(MyListBox, 0) as ScrollViewer;
myScrollviewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
myScrollviewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
//key part - use SetValue to set ManipluationMode.System/Control
myScrollviewer.SetValue(ScrollViewer.ManipulationModeProperty, ManipulationMode.System);

再度無効にする必要がある場合は、同じことを行うことができますが、無効になっているプロパティとManipulationMode.Control.

var myScrollviewer = VisualTreeHelper.GetChild(MyListBox, 0) as ScrollViewer;
myScrollviewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
myScrollviewer.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled;
//key part - use SetValue to set ManipluationMode.System/Control
myScrollviewer.SetValue(ScrollViewer.ManipulationModeProperty, ManipulationMode.Control);
于 2013-07-30T00:08:30.627 に答える