我正在使用Xamarin.Forms应用程序(UWP!)。它具有主从结构。母版页具有一个ListView,并且其中的每个项目都会打开一个对应的“详细信息”页。第一个“详细信息”页面只有一个WebView,该WebView在加载时播放YouTube视频。现在,第二个“详细信息”视图仅具有一个占位符标签。我从第一个“详细信息”页面切换到第二个“详细信息”页面时,仍然听到了第一个“详细信息”页面中的视频声音。当我切换回第一个“详细信息”页面时,视频再次加载,现在我听到了两种声音。切换到第二个“详细信息”页面时如何停止视频并返回时继续播放?如果这不可能,那么如何在退出“详细信息”页面后立即停止播放视频?
我想我可以在详细信息页面的重写的OnDisappearing()方法中做一些事情:
protected override void OnDisappearing()
{
MyWebView.NavigateToString(""); // This does not work, as NavigateToString() is not part of WebView.
base.OnDisappearing();
}
您能告诉我我可以用来停止在WebView中播放视频吗?
谢谢。
答案 0 :(得分:0)
您能告诉我我可以用来停止在WebView中播放视频吗?
根据您的要求,您可以注入Eval
Java脚本。
WebView
更新
我已经重新检查了您的问题,当您导航到另一页时,WebView
未被正确释放。如果要停止WebViewRenderer
视频播放,可以通过自定义[assembly: ExportRenderer(typeof(WebView), typeof(CustomWebViewRender))]
namespace App4.UWP
{
class CustomWebViewRender : WebViewRenderer
{
private Windows.UI.Xaml.Controls.WebView _WebView;
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
var source = Element.Source as UrlWebViewSource;
_WebView = new Windows.UI.Xaml.Controls.WebView();
SetNativeControl(_WebView);
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == WebView.SourceProperty.PropertyName)
{
var source = Element.Source as UrlWebViewSource;
if (source.Url == string.Empty)
{
_WebView.NavigateToString(string.Empty);
}
}
}
}
}
使其导航到空白页面。
protected override void OnAppearing()
{
base.OnAppearing();
MyWebView.Source = "https://www.youtube.com";
}
protected override void OnDisappearing()
{
MyWebView.Source = string.Empty;
base.OnDisappearing();
}
用法
<WebView HeightRequest="500" WidthRequest="500" x:Name="MyWebView"/>
Xaml
^([A-Za-z]{3})-RO-.*