2015-10-17 14 views
0

我有一個處理滑動事件的Grid。在這Grid a ListView被放置。不幸的是,如果ListView有自己的滾動條(大於頁面),它會「消耗掉」所有的滑動事件。無法在ListView所在的屏幕部分上捕捉向左或向右滑動的滑動事件。在沒有ListView的情況下捕獲網格上的滑動事件,並且滾動條正在阻擋

GridListView

<Grid 
    Name="SwipingSurface" 
    Background="Transparent" 
    Height="657" 
    Margin="30"> 
    (...) 
    <ListView 
     ShowsScrollingPlaceholders="True" 
     Grid.Row="1" 
     ItemsSource="{Binding MeditationDiary}" 
     FontFamily="Segoe WP" 
     Margin="0,45.5,0,0" 
     Grid.RowSpan="2" 
     d:LayoutOverrides="TopPosition, BottomPosition"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       [Grid and textblock template] 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</Grid> 

,處理輕掃(右)事件中的代碼:

public MainPage() 
{ 
    this.InitializeComponent(); 

    this.NavigationCacheMode = NavigationCacheMode.Required; 

    SwipingSurface.ManipulationMode = ManipulationModes.TranslateX | ManipulationModes.TranslateY; 
    SwipingSurface.ManipulationStarted += OnStarted; 
    SwipingSurface.ManipulationCompleted += OnManipulationCompleted; 
} 

public void OnStarted(object sender, ManipulationStartedRoutedEventArgs e) 
{ 
    _initialPoint = e.Position; 
} 

public void OnManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e) 
{ 
    var currentPoint = e.Position; 
    if (_initialPoint.X - currentPoint.X >= Constants.SwipingTreshold) 
    { 
     // Do something 
    } 
} 

有沒有一種辦法能夠處理的Grid刷卡事件,而不ListView阻礙?

/編輯有人對這個問題投了贊成票,因爲他或她發現它不清楚問什麼,所以在此澄清:上面的代碼生成下面的ListView。如果您在History上滑動,則可以向左滑動並注意事件。但是,如果您在包含內容的ListView上進行滑動(僅當它長於頁面並且可以向下滾動時),則不會註冊滑動。我認爲這是因爲ListView捕獲事件。

The problem with sipwing

回答

1

也許將ScrollViewer.Horizo​​ntalScrollBarVisibility = 「已禁用」,以你的ListView聲明可能會有幫助。作爲替代方法您可以嘗試修改listView的樣式。也許你會在那裏找到一個scrollviewer,然後禁用它設置它的屬性。

+0

謝謝。添加'ScrollViewer.Horizo​​ntalScrollBarVisibility =「已禁用」 '不能幫助不幸。我找不到任何可能改變爲「ScrollViewer」風格的東西。我也試過:'ManipulationMode =「None」'和ShowsScrollingPlaceholders =「False」'。 –

相關問題