簡體   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