WPF中MediaElement的MediaOpened事件不触发

问题描述:今天做Jaguar。用的WPF框架,其中每个Page中有一个MediaElement,总是跳转不到第二个Page。但是在调试的时候加入断点,就可以。

问题分析
用断点查找,发现第二个Page的MediaElement的MediaOpened不触发导致的问题。
MediaElement的.xaml是这样定义的:
<MediaElement Name="mediaElement" Margin="0" MediaOpened="mediaElement_MediaOpened" MediaEnded="mediaElement_MediaEnded" LoadedBehavior="Manual" UnloadedBehavior="Manual" />
MediaElement的.xaml.cs是这样定义的:
mediaElement.Source = new Uri(source);
mediaElement.Stop();

把.xaml.cs改为:
mediaElement.pause();
无用。
把.xaml.cs改为:
mediaElement.play();
video倒是在后台播了,但是还是不触发MediaOpened。

随后查找资料:
MediaOpened: 当媒体流已被验证和打开且已读取文件头时发生。如果 AutoPlay 属性设置为 false,则当发生 MediaOpened 事件时,将暂停媒体。另外要注意: Position 属性在发生 MediaOpened 事件之前为 null。虽然 Position 是可设置的。但在引发 MediaOpened 事件之前,不应尝试设置 Position。包括不应在 XAML 中设置初始 Position 值。
把所有Opened之前的Position改掉,无用。
我彻底被打败了,只好跳过MediaOpened事件,直接把MediaElement加上去。

Kinect for developer

最近公司做Jaguar,用Kinect做互动。因为Developer版本的Kinect要贵,而且中国不销售,定85个来不及。所以每次调试VS都如下输出

The Kinect sensor plugged into your computer is for use on the Xbox 360.
You may continue using your Xbox 360 Kinect sensor on your computer for development purposes.
Microsoft does not guarantee full compatibility for Kinect for Windows applications and the Xbox 360 Kinect Sensor.

悲剧啊