您好我正在尝试在silverlight中为wp7创建一个简单的鼓机应用程序。我发现大约有60%的时间在同一时间(或几乎同一时间)点击两个不同位置的屏幕时,其中一个位置未被检测到。
我已经连接了Layoutroot网格,以便在操作开始时引发事件,如下所示。问题是大约60%的时间我同时按下分配给高帽的屏幕部分和分配给底鼓或圈套的屏幕部分同时只触摸其中一个声音的触摸位置将在触摸屏中捕获。
我正在测试运行芒果的LG optimus。关于如何解决这个问题的任何想法?民意调查而不是提高事件会产生更好的结果吗?我最好将此应用程序创建为XNA游戏而不是Silverlight应用程序吗?任何帮助或想法将不胜感激。
<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationStarted="LayoutRoot_ManipulationStarted">
答案 0 :(得分:1)
我在列表框项和上下文菜单中遇到了类似的问题。 我这样修好了:
将您的rootframte附加到MouseLeftButtonDown =“LayoutRoot_MouseLeftButtonDown”
此事件总是100%被提升。
如果点击clickPoint = e.GetPosition(null);
现在是时候识别位于那些屏幕坐标的对象(如果有的话)。
下面是我识别listboxitem的代码。您可以将它与您自己的UI对象一起使用:
ListBoxItem listBoxItem = null;
List<UIElement> listControls = (List<UIElement>)VisualTreeHelper.FindElementsInHostCoordinates(clickPoint , this);
foreach (UIElement ctrl in listControls)
{
if (ctrl is ListBoxItem)
{
listBoxItem = (ListBoxItem)ctrl;
break;
}
}
//get the index of the selected listboxitem.
ListBox view = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox;
干杯, 维拉德