我有显示多个图像或按钮之一的页面。单击按钮时,我将其隐藏并显示列表中的下一个图像。点击图像使其消失并再次显示按钮。
快速连续多次单击按钮时,显示的图像不会响应被点击。我想这是由于UI线程阻塞,但我尝试使用工作线程,但仍无法正常工作。
public void ShowNextImage()
{
image_new.Source = getCurrentBitmap();
workerThread.WorkerReportsProgress = true;
workerThread.WorkerSupportsCancellation = true;
workerThread.DoWork += new DoWorkEventHandler(worker_DoWork);
workerThread.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
workerThread.RunWorkerAsync();
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
transition.Begin();
transition.Completed += delegate
{
transition.Stop();
};
});
}
void worker_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
// Happens on the UI thread so its ok
MessageBox.Show("Error occurred...");
}
}
答案 0 :(得分:1)
我建议您从Codeplex安装Windows Phone Toolkit并使用GestureListener
。这使您可以检测到许多不仅仅是Tap
和DoubleTap
的内容,它还会支持缩放大小和拖动。
确保在VS2010中打开源代码并查看GestureSample.xaml
您可能只需将其中的大部分内容提升到您的应用中。
答案 1 :(得分:0)
我的猜测是你委托代码导致问题:
transition.Completed += delegate
{
transition.Stop();
};
我的猜测是,在您开始下一次图像转换时,所有线程上下文切换中的Completed事件都会被触发。
有一些事情你可以尝试帮助解决这个问题:
不要一起尝试这些:)
当然,我的猜测可能是错的......它可能是别的......
答案 2 :(得分:0)
再次阅读此内容......另一种可能性是在按钮顶部绘制了一些内容,而这正在捕捉触摸事件。
一个基本建议是:
使用此按钮将告诉您Button是否仍在响应点击事件或是否发生了更复杂的事情。我的经验是,通常Button在点击级别继续工作现在与你击中它们的次数有关 - 所以其他东西在点击逻辑本身或者在按钮顶部显示的其他东西上出错了,这就防止了它被点击。