我在用户从ComboBox中选择条目时以编程方式填充ListView。在网格上的滑动在手机上被忽略
我想通过允许轻扫左/右作为一种替代的方法来改变内容的用户,以提高应用程序可用性。
更精确地说,当用户执行了轻拂或短划动,列表视图获取与一组不同的产品填充。我不需要任何视觉提示的操作已经开始(即如EDGE用手势也时来回导航)
下面是简化的XAML结构。
<Grid
x:Name="MainGrid"
ManipulationMode="TranslateX, TranslateInertia"
Loaded="MainGrid_Loaded">
<ComboBox x:Name="CBMonthPicker" />
<ListView
x:Name="LV"
ItemsSource="{Binding CalItems, ElementName=page}"
DataContext="MainPage"
IsItemClickEnabled="True"
ItemClick="OnItemClick"
ItemTemplateSelector="{StaticResource MyDataTemplateSelector}">
</ListView>
</Grid>
这里是我使用的检测轻扫,其在桌面上工作(如果我模拟用鼠标划动)的代码,但在移动设备上不起作用(Grid_ManipulationDelta不触发移动):
private void MainGrid_Loaded(object sender, RoutedEventArgs e)
{
MainGrid.ManipulationDelta += Grid_ManipulationDelta;
}
private void Grid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var swiped = e.Cumulative.Translation.X;
var swipeTriggerThreshhold = 300;
//if the gesture was not above a set threshold we ignore it
if (!e.IsInertial || swiped * swiped < swipeTriggerThreshhold * swipeTriggerThreshhold)
return;
//If we got so far, we registered a swipe
e.Complete(); //end manipulation so we only handle it once
if (swiped < 0) { //we swiped left
changeDisplayedMonth(-1);
}
else{ //we swiped right
changeDisplayedMonth(1);
}
}
我的猜测是,ListView控件或ListViewItem的(S)在某种程度上隐藏在电网的操作。
我已经尝试使用ListView和ListViewItem来处理操作,但是ManipulationDelta从来没有被触发任何它们,即使我将ManipulationMode设置为TranslateX,TranslateInertia。
有很多关于滑动ListViewItem(如Outlook中的功能)的问题。这个问题与此无关。
由于内容是根据用户输入动态加载的,我宁愿不使用Pivot。即使我可以,这也意味着我的界面发生了重大变化,我再也不想这么做了。
只是想了解你的用户界面:你有一个ListView覆盖了ComboBox和用户可以与两者进行交互?或者它们低于彼此? – schumi1331
组合框和列表视图共享相同的网格(我的XAML示例中的MainGrid),但放置在单独的行上。它们不重叠。值得注意的是,如果我在组合框上滑动,则可以在移动设备上进行滑动。 – brett