我有一個處理滑動事件的Grid
。在這Grid
a ListView
被放置。不幸的是,如果ListView
有自己的滾動條(大於頁面),它會「消耗掉」所有的滑動事件。無法在ListView
所在的屏幕部分上捕捉向左或向右滑動的滑動事件。在沒有ListView的情況下捕獲網格上的滑動事件,並且滾動條正在阻擋
的Grid
與ListView
:
<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
捕獲事件。
謝謝。添加'ScrollViewer.HorizontalScrollBarVisibility =「已禁用」 '不能幫助不幸。我找不到任何可能改變爲「ScrollViewer」風格的東西。我也試過:'ManipulationMode =「None」'和ShowsScrollingPlaceholders =「False」'。 –