2017-09-20 19 views
0

設定されている位置が反映されていないMediaElementがあります。MediaElement.PositionがUWPの変更を反映していない

if(Playback.CanSeek) 
    Playback.Position = new TimeSpan(0,0,4); 

のMediaElementに注意してくださいは、現在一時停止し、自動再生等になっている そこには誤りがありませんが、ラインはちょうどPositionプロパティを変更しません。

Core Dispatcherでもコードを実行しましたが、まだ運がありません。

編集:MediaElementはC#から作成され、XMLに関連付けられていないことに注意してください。これは、ViewModelにライブラリとしてあるためです。

ありがとうございます。

+0

それが果たしている何:次のコードのような例えば

?私は巻き戻せないことがいくつかあることを思い出します。 – Sinatr

+0

シンプルなmp3ファイルを再生する – AbsoluteSith

+0

あなたは[スクラブをセットしましたか?](https://stackoverflow.com/q/15053870/1997232)でしたか? – Sinatr

答えて

1

この問題を解決するには、MediaElementオブジェクトをXAML UIに追加する必要があります。

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

    <Button Content="set" Click="Button_Click"></Button> 
</Grid> 
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); 
    } 
} 
+0

MVVMの場合、私のViewModelにはほとんどのロジックが存在するため、MediaElementがある場合はどうすればよいとお考えでしょうか。 – AbsoluteSith

+0

ディスパッチャを送信してコアスレッドで処理できるかどうかを確認します – AbsoluteSith

+0

@AbsoluteSithなぜMediaElementコントロールをXAMLに配置し、ソースをバインドしないのですか? – Skyblue

関連する問題