我正在尝试创建一个涉及多个 SurfaceListBox 元素和子数据项的 MS Surface 2.0 应用程序。这里的关键交互是以拖放方式沿列表框拖动数据项(我知道这已被大量记录,我一直在阅读)。
我一直在使用此处提供的 MSDN 文章来回答一些关于整个拖放事件如何在 Surface 中发生的问题,但我肯定还在学习。他们提到的一件事是,可能需要两次触摸来启动拖放事件,以便仍然可以使用一根手指来滚动列表框。但是,我似乎无法让该代码正常工作。
//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,第二部分检查它是否在同一启动中被触摸过(然后需要两个手指),但它抛出一个错误,说明它首先不能有那种带有方法组和整数的运算符,并且在将其更改为单个等号 (=) 后,告诉我我不能使用 || 在布尔值和方法组之间。
一般来说,我还是 C# 的新手,所以我假设我在这里缺少某种简单的语法或逻辑元素,或者如果 MS 如何实现 TouchesCapturedWithin 从 SDK 1.0 更改为 2.0(或者我可以'不要将代码转置到正确的部分),但如果有人能把我引向正确的方向,我会很感激的。谢谢!