将MediaElement添加到画布

时间:2013-10-07 11:23:23

标签: c# wpf nullreferenceexception

我正在尝试为媒体项目创建叠加系统。为此,我在表单中添加了一个画布。通过代码我向画布添加一个媒体元素。

mediaPlayer = new MediaElement();
canvas.Children.Add(mediaPlayer);
mediaPlayer.HorizontalAlignment = HorizontalAlignment.Left;
mediaPlayer.VerticalAlignment = VerticalAlignment.Top;
mediaPlayer.Height = 1080;
mediaPlayer.Width = 1920;
mediaPlayer.Source = new Uri(ConfigurationManager.AppSettings["VideoFile"], UriKind.Relative);

mediaPlayer.LoadedBehavior = MediaState.Manual;

mediaPlayer.Play();
mediaPlayer.MouseDown +=mediaPlayer_MouseDown;

当我启动应用程序时,我在canvas上获得了一个异常.Children.Add(mediaPlayer):对象引用未设置为对象的实例。如果我在实例化之后,就在Play()调用之前或者在play()调用之后放置此行,那么它就不会发生。

我做了一些测试,当它在设计器中添加时它可以工作,虽然你不能开始maunally,然后将LoadedBehavior设置为手动它也会崩溃(同样的错误)。将媒体元素添加到表单时它确实按预期工作,但现在我无法覆盖元素......我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题不在于上面的代码。问题是在WPF中你需要调用InitializeComponent。创建新表单时,此方法是标准生成的。不小心我删除了那行代码。这会导致所有表单元素都不会被初始化。