我目前正在構建一個Windows 8 XAML C#應用程序。在頁面中,我有一個用於水平滑動和滾動的滾動查看器。我有幾個控件在scorllviewer中工作得很好。但是當你滾動並且你的光標位於ListView/GridView之上時,那個控件將處理scrollnig而不是scrollviewer。 滑動這不會發生,但與鼠標滾輪停止scrollvieweing滾動。 有人知道如何禁用此行爲或有解決方法嗎?ScrollViewer GridView XAML
5
A
回答
0
這也是我看到的問題。它不存在觸摸 - 只有在使用鼠標滾輪時纔會出現。我還不知道解決方法。我不認爲有一個。
1
在處理了這個問題很長一段時間後,我決定改變策略。至少在我的解決方案中,我將內部GridView更改爲僅爲ItemsControl。這樣我就可以處理所有的點擊/點按操作,但仍然可以按照預期的方式進行滾動。
當然,這個解決方案不適合每個人,因爲有時候您還需要所有選擇內容。但對我來說,它的工作原理是我只需要點擊/點擊項目。
希望它可以幫助
0
我在這裏找到一個解決辦法:msdn workaround
Basicly你必須做到以下幾點:
基地XAML:
<Grid Name="BaseElement">
<ScrollViewer Name="MainScrollViewer" Style="{StaticResource HorizontalScrollViewerStyle}" VerticalScrollMode="Auto">
<GridView />
<GridView />
</ScrollViewer>
</Grid>
添加新處理根元素:
BaseElement.AddHandler(PointerWheelChangedEvent, new PointerEventHandler(Bubble_PointerWheelChanged), true);
實現處理程序來韓德爾滾動:
private void Bubble_PointerWheelChanged(object sender, PointerRoutedEventArgs e) { // Could walk up the tree to find the next SV or just have a reference like here: MainScrollViewer.ScrollToHorizontalOffset(MainScrollViewer.HorizontalOffset - e.GetCurrentPoint(null).Properties.MouseWheelDelta); }
0
我也有同樣的問題。然後我試圖從網格模板移除滾動條,如下線程提到..它爲我工作很好..
0
最佳解決方案不斷。
public class CustomGridView : GridView
{
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
var sv = this.GetTemplateChild("ScrollViewer") as UIElement;
if (sv != null)
sv.AddHandler(UIElement.PointerWheelChangedEvent, new PointerEventHandler(OnPointerWheelChanged), true);
}
private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e)
{
e.Handled = false;
}
}
0
1.增加驗證碼在View.cs:
private void ThumbnailViewer_OnMouseWheel(object sender, MouseWheelEventArgs e)
{
ThumbnailViewerScroller.ScrollToHorizontalOffset(ThumbnailViewerScroller.HorizontalOffset - e.Delta);
}
2.加代碼在XAML:
<ScrollViewer
x:Name="ViewerScroller"
MouseWheel="ThumbnailViewer_OnMouseWheel">
<StackPanel>
...
</StackPanel>
</ScrollViewer>
請您總結一下在鏈接你的答案。 – michaelb958 2013-06-02 05:17:44