Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MediaElement.不反映UWP变化的位置_C#_Uwp_Windows Runtime - Fatal编程技术网

C# MediaElement.不反映UWP变化的位置

C# MediaElement.不反映UWP变化的位置,c#,uwp,windows-runtime,C#,Uwp,Windows Runtime,我有一个MediaElement,它在设置时的位置不反映 if(Playback.CanSeek) Playback.Position = new TimeSpan(0,0,4); 请注意,MediaElement当前已暂停,自动播放已打开等。 没有错误,但该行不会更改Position属性 也在Core Dispatcher中运行了代码,但仍然没有成功 编辑:还要注意,此MediaElement是从C创建的,与XAML没有关联,因为它在ViewModel中是一个库 谢谢。要解决此问题,您

我有一个MediaElement,它在设置时的位置不反映

if(Playback.CanSeek)
   Playback.Position = new TimeSpan(0,0,4);
请注意,MediaElement当前已暂停,自动播放已打开等。 没有错误,但该行不会更改Position属性

也在Core Dispatcher中运行了代码,但仍然没有成功

编辑:还要注意,此MediaElement是从C创建的,与XAML没有关联,因为它在ViewModel中是一个库


谢谢。

要解决此问题,您必须将MediaElement对象添加到XAML UI中

例如,类似以下代码:

<Grid x:Name="root" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Button Content="set" Click="Button_Click"></Button>
</Grid>

它播放什么?我记得有些东西是不能倒带的。它播放的是一个简单的mp3文件,对吗?这可能不适用于UWP MediaElement。因此,您建议我如何处理MVVM的情况,其中我的ViewModel有MediaElement,因为大部分逻辑都在那里。我将看看是否可以发送一个调度程序并在核心中使用它Thread@AbsoluteSith为什么不在XAML上放置一个MediaElement控件,并将源代码绑定到它?因为我有自己的自定义控件,我将其用作MediaElement控件MediaElement在由代码创建时仍然可以播放媒体文件。我认为这是不合理的。
MediaElement playback = new MediaElement();
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var file = await Package.Current.InstalledLocation.GetFileAsync("test.mp3");
    if (file != null)
    {
        var stream = await file.OpenReadAsync();
        playback.SetSource(stream, file.ContentType);
    }
    playback.Play();
    root.Children.Add(playback);
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (playback.CanSeek)
    {
        playback.Position = TimeSpan.FromSeconds(5);
    }
}