0

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

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() 调用之后,这并不重要。

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

4

1 回答 1

0

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

于 2013-10-13T08:56:16.827 回答