2

我正在使用 VisualStudio 11 beta 进行 Windows 8 Metro 应用程序开发,但出现错误。错误是:

Cannot implicitly convert type 
   'System.EventHandler<Windows.UI.Input.ManipulationStartedEventArgs>' to 
   'Windows.UI.Xaml.Input.ManipulationStartedEventHandler'

我的代码是。

selectRectangle.ManipulationStarted += new EventHandler<ManipulationStartedEventArgs>(OnRectangleManipulationStarted);
ellipseTL.ManipulationStarted += new EventHandler<ManipulationStartedEventArgs>(OnRectangleManipulationStarted);
4

1 回答 1

2

我还没有为 Metro 使用过 VS 2012,但据我了解,Metro/.NET 4.5 对命名空间进行了一些重组,或者至少 selectRectangle/ellipseTL.ManipulationStarted 事件使用了不同的类。当然,在这种情况下,他们正在寻找一个ManipulationStartedEventHandlernot an EventHandler<>

试试这个:

selectRectangle.ManipulationStarted += new Windows.UI.Xaml.Input.ManipulationStartedEventHandler(OnRectangleManipulationStarted);
ellipseTL.ManipulationStarted += new Windows.UI.Xaml.Input.ManipulationStartedEventHandler(OnRectangleManipulationStarted);

或者使用隐式事件处理程序语法:

selectRectangle.ManipulationStarted += OnRectangleManipulationStarted;
ellipseTL.ManipulationStarted += OnRectangleManipulationStarted;

但就像我说的,我还没有使用新的 API,所以这只是我对 4.0 体验的最佳猜测。

编辑:您可能还需要更改 OnRectangleManipulationStarted 方法的签名以匹配 ManipulationStartedEventHandler 签名。

于 2012-05-08T14:01:17.020 回答