繁体   English   中英

媒体元素源在XAML中未更改

[英]Media element source not changing in XAML

我正在尝试在WPF中构建媒体播放器。 有一个媒体播放器和一些按钮。 播放器的源最初设置为特定视频。 单击每个按钮需要将媒体播放器的源更改为不同的URI。 第一个视频可以正确播放,但是单击按钮似乎并没有改变媒体播放器的来源。 我检查了可能的解决方案和SO,但似乎没有发现任何不同。 当我刚加入WPF时,我可能会错过一些基本知识。

我的代码如下:

<MediaElement Source="C:\video\a.mpg" Name="myMediaElement" HorizontalAlignment="Left" Height="208" Margin="10,10,0,0" VerticalAlignment="Top" Width="252" LoadedBehavior="Manual" UnloadedBehavior="Manual" Stretch="Fill"      MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded"/>

这是初始化媒体元素的方式

这就是我试图更改来源的方式:

  private void ChangeMedia(object sender, MouseButtonEventArgs args)
  {
     MessageBox.Show("Media to be changed");// This is called and a message box pops up showing this message.
     myMediaElement.Source = new System.Uri("C:\video\b.mpg");
     MessageBox.Show("Media changed successfully"); // never gets called and message box does not pop up 
  }

请让我知道我要去哪里了

删除XAML内的硬编码源,并在创建URI时指定该路径为绝对路径

xaml:

<MediaElement x:Name="myMediaElement" HorizontalAlignment="Left" Height="208" Margin="10,10,0,0" VerticalAlignment="Top" Width="252" LoadedBehavior="Manual" UnloadedBehavior="Manual" Stretch="Fill" MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded"/>

后台代码:

public MyWindow()
{
    InitializeComponent();
    myMediaElement.Source = new Uri(@"C:\video\a.mpg", UriKind.Absolute);
}

private void ChangeMedia(object sender, MouseButtonEventArgs args)
{
    MessageBox.Show("Media to be changed");// This is called and a message box pops up showing this message.
    myMediaElement.Source = new Uri(@"C:\video\b.mpg", UriKind.Absolute);
    MessageBox.Show("Media changed successfully"); // never gets called and message box does not pop up 
}

另外请注意,路径必须正确转义反斜杠。 您可以在整个字符串上使用@ ,也可以在每个斜杠上使用\\\\

在尝试了d.moncada所说的内容之后,我的应用程序开始崩溃。 我连接了调试器,发现它在设置路径的地方崩溃了。

   myMediaElement.Source = new Uri("C:\video\a.mpg", UriKind.Absolute); //It crashed here

这是错误消息:

Additional information: Invalid URI: A Dos path must be rooted, for example, 'c:/'.

我在Google上搜索了很多内容,但似乎没有什么可以解决我的问题。 然后我想如果转义序列等可能有任何问题。我只是在路径中尝试了双斜杠而不是单斜杠,它就像魔术一样工作!

 myMediaElement.Source = new Uri("C:\\video\\a.mpg", UriKind.Absolute); //It worked!!

我不知道背后的确切原因,但确实解决了我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM