では無視されます。スワイプは、ユーザーがコンボボックスから項目を選択したときに、私はプログラムでListViewコントロールを移入しています
コンテンツを変更する別の方法として、ユーザーが左右にスワイプできるようにすることで、アプリの使いやすさを向上させたいと考えています。
さらに正確に言えば、ユーザーがフリックまたは短いスワイプを実行すると、リストビューには別の項目が設定されます。操作が開始されたという視覚的な手がかりは必要ありません(つまり、ジェスチャを使用して前後にナビゲートするときにLike 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は何らかの形でグリッドからの操作を隠しています。
私はListViewとListViewItemを使って操作を処理しようとしましたが、ManipulationModeをTranslateX、TranslateInertiaに設定しても、ManipulationDeltaは決して起動されません。
スワイプに関してListViewItem(Outlookに掲載されているようなもの)に関する多くの質問があります。この質問はそれとは関係ありません。
コンテンツはユーザーの入力に基づいて動的に読み込まれるため、Pivotを使用しないでください。たとえできたとしても、それは私のインターフェースに大きな変化をもたらすことになり、やはりやり直してしまいます。
:あなたはオーバーレイリストビューを持っていますComboBoxとユーザーは両方と対話できますか?または彼らはお互いの下にいるのですか? – schumi1331
コンボボックスとリストビューは同じグリッド(XAMLサンプルのMainGrid)を共有しますが、別々の行に配置されます。それらは重複しません。私がコンボボックスをスワイプすると、そのスワイプがモバイルで動作することに注目する価値があります。 – brett