我已经下载了MSDN示例项目,用于了解手机摄像头的使用情况。我正在开发Windows Phone 8应用程序。
启动下载的项目时,一切都很好。
现在我想在我自己的项目中加入一些基础知识。将XAML和XAML.CS复制到我的项目后,我收到以下错误:
'GestureEventArgs'是'System.Windows.Input.GestureEventArgs'和'Microsoft.Phone.Controls.GestureEventArgs'之间的模糊引用
这引用了MSDN的以下代码:
// Provide touch focus in the viewfinder.
void focus_Tapped(object sender, GestureEventArgs e)
{
if (cam != null)
{
if (cam.IsFocusAtPointSupported == true)
{
try
{
// Determine location of tap.
Point tapLocation = e.GetPosition(viewfinderCanvas);
// Position focus brackets with estimated offsets.
focusBrackets.SetValue(Canvas.LeftProperty, tapLocation.X - 30);
focusBrackets.SetValue(Canvas.TopProperty, tapLocation.Y - 28);
// Determine focus point.
double focusXPercentage = tapLocation.X / viewfinderCanvas.Width;
double focusYPercentage = tapLocation.Y / viewfinderCanvas.Height;
// Show focus brackets and focus at point
focusBrackets.Visibility = Visibility.Visible;
cam.FocusAtPoint(focusXPercentage, focusYPercentage);
// Write a message to the UI.
this.Dispatcher.BeginInvoke(delegate()
{
txtDebug.Text = String.Format("Camera focusing at point: {0:N2} , {1:N2}", focusXPercentage, focusYPercentage);
});
}
catch (Exception focusError)
{
// Cannot focus when a capture is in progress.
this.Dispatcher.BeginInvoke(delegate()
{
// Write a message to the UI.
txtDebug.Text = focusError.Message;
// Hide focus brackets.
focusBrackets.Visibility = Visibility.Collapsed;
});
}
}
else
{
// Write a message to the UI.
this.Dispatcher.BeginInvoke(delegate()
{
txtDebug.Text = "Camera does not support FocusAtPoint().";
});
}
}
}
我不明白,这里出了什么问题......有什么帮助吗?
答案 0 :(得分:2)
您似乎同时使用以下两种语句:
using System.Windows.Input;
using Microsoft.Phone.Controls;
可能会导致冲突,因为上面每个命名空间中都定义了一个不同的GestureEventArgs
类。
您可以使用namespace alias来解决此冲突,例如,如果您打算使用GestureEventArgs
命名空间中的System.Windows.Input.GestureEventArgs
,请添加以下using语句:
using GestureEventArgs = System.Windows.Input.GestureEventArgs;
void focus_Tapped(object sender, GestureEventArgs e)
{
.......
}
或其他选项使用完全限定的类名:
void focus_Tapped(object sender, System.Windows.Input.GestureEventArgs e)
{
.......
}
答案 1 :(得分:1)
您可能已在项目中安装了Window Phone Toolkit。
在Windows Phone 7中,Toolkit添加了一个API来管理手势。在Windows Phone 8上,此功能是内置的,因此您有两个具有相同名称的类,并且编译器不知道要使用哪个类。
您应该做的是指示编译器使用哪个类,只需在其前面添加内置API的命名空间(System.Windows.Input
):
void focus_Tapped(object sender, System.Windows.Input.GestureEventArgs e)