複数の SurfaceListBox 要素と子データ項目を含む MS Surface 2.0 アプリケーションを作成しようとしています。ここでの重要な相互作用は、リスト ボックスに沿ってドラッグ アンド ドロップ方式でデータ項目をドラッグすることです (これについては、十分に文書化されていることを知っています。私は読んでいます)。
ここで提供されている MSDN の記事を使用して、Surface でドラッグ アンド ドロップ イベント全体がどのように発生するかについてのいくつかの質問に答えてきましたが、間違いなくまだ学習中です。彼らが言及していることの 1 つは、リストボックスをスクロールするために 1 本の指を使用できるように、ドラッグ アンド ドロップ イベントを開始するために 2 回のタッチが必要になる可能性があるということです。ただし、そのコードを機能させることができないようです。
//The following 15 lines are provided for background.
FrameworkElement findSource = e.OriginalSource as FrameworkElement;
SurfaceListBoxItem draggedElement = null;
// Find the touched SurfaceListBoxItem object.
while (draggedElement == null && findSource != null)
{
if ((draggedElement = findSource as SurfaceListBoxItem) == null)
{
findSource = VisualTreeHelper.GetParent(findSource) as FrameworkElement;
btnEditProj.Visibility = System.Windows.Visibility.Visible;
btnDeleteProj.Visibility = System.Windows.Visibility.Visible;
}
}
//THIS IS THE PART IN QUESTION.
if (draggedElement == null || draggedElement.TouchesCapturedWithin.Count == 0)
{
return;
}
最初の部分では、要素がまだ SurfaceListBoxItem として識別されていないかどうかを確認し、2 番目の部分では、以前に同じ開始で触れられたかどうかを確認します (これには 2 本の指が必要になります)。最初に、メソッド グループと整数を使用したその種の演算子を使用できないことを示すエラーをスローし、それを単一の等号 (=) に変更すると、|| を使用できないことがわかります。bool とメソッド グループの間。
私は一般的にC#に関してはまだかなりの初心者なので、ここである種の単純な構文またはロジック要素が欠けていると思います。または、MSがTouchesCapturedWithinを実装する方法がSDK 1.0から2.0に変更された場合(または、単に変更できる場合もあります)コードを正しいセクションに転置しないでください)、誰かが私を正しい方向に投げることができれば、私はそれを感謝します. ありがとう!