WPF MediaElement重启自己?

时间:2015-07-17 11:30:04

标签: wpf xaml binding mediaelement

我有XAML表单,其中包含(我简化的代码以保持透明):

<Grid>
    <TextBlock Grid.Row="0"
               FontSize="20"
               Foreground="Yellow"
               Text="{Binding ErrorMessage}"/>
    ... some others controls ...

    <MediaElement x:Name="mediaPlayer"
                      Grid.Row="0"
                      Grid.RowSpan="5"
                      Grid.Column="0"
                      Grid.ColumnSpan="3"
                      Loaded="mediaPlayer_Loaded"
                      LoadedBehavior="Manual"
                      MediaEnded="mediaPlayer_MediaEnded"
                      Source="{Binding CurrentAd.Path}" />
</Grid>

背后的代码:

    private void mediaPlayer_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
        mediaPlayer.Play();
    }

    private void mediaPlayer_MediaEnded(object sender, System.Windows.RoutedEventArgs e)
    {
        mediaPlayer.Position = new TimeSpan(0, 0, 0, 0, 1);
        mediaPlayer.Play();
    }

正如您所看到的,当CurrentAd对象不为空时MediaElement在全屏显示并播放它并在完成时再次启动。 Viewmodel包含每10秒钟经过一次的计时器并设置ErrorMessage属性和CurrentAd属性(但只有当它改变时,方法Refresh() - 列在下面)。

来自DataContext的方法:

void Refresh()
    {
        try
        {
            Advertisment newAd = AdvertismentManager.GetCurrentAd();
            if (!newAd.Equals(CurrentAd))
                CurrentAd = newAd;
            ....
            ErrorMessage = "";
        }
        catch(Exception ex)
        {
            ErrorMessage = ex.Message;
        }

我的问题是每次调用刷新方法我的视频播放器都在重启。它不是由绑定的CurrentAd路径的更改引起的。它是由赋值ErrorMessage变量引起的。我没有在网上找到任何类似的问题,我认为这是奇怪的行为。有什么想法吗?

0 个答案:

没有答案