2015-08-30 4 views

ответ

3

Использование WebView пользовательских рендерер (https://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/):

public class TitleWebView : Xamarin.Forms.WebView 
{ 
    public static readonly BindableProperty PageTitleProperty = BindableProperty.Create<TitleWebView, string>(v => v.PageTitle, null, BindingMode.OneWayToSource); 

    public string PageTitle 
    { 
     get { return (string)GetValue(PageTitleProperty); } 
     set { SetValue (PageTitleProperty, value); } 
    } 
} 

Android рендерер:

public class TitleWebViewRenderer : WebViewRenderer 
{ 
    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e) 
    { 
     base.OnElementChanged(e); 

     if (e.OldElement == null) 
     { 
      Control.SetWebViewClient(new TitleWebViewClient(this)); 
     } 
    } 

    internal class TitleWebViewClient : WebViewClient 
    { 
     readonly TitleWebViewRenderer titleWebViewRenderer; 

     internal TitleWebViewClient(TitleWebViewRenderer titleWebViewRenderer) 
     { 
      this.titleWebViewRenderer = titleWebViewRenderer; 
     } 

     public override void OnPageFinished(Android.Webkit.WebView view, string url) 
     { 
      base.OnPageFinished(view, url); 
      ((IElementController) titleWebViewRenderer.Element).SetValueFromRenderer(TitleWebView.PageTitleProperty, view.Title); 
     } 
    } 

IOS рендерер:

public class TitleWebViewRenderer : WebViewRenderer 
{ 
    public TitleWebViewRenderer() 
    { 
     this.LoadFinished += (object sender, EventArgs e) => { 
      var titleWebView = (TitleWebView)Element; 
      ((IElementController)Element).SetValueFromRenderer(TitleWebView.PageTitleProperty, 
       EvaluateJavascript("document.title")); 
     }; 
    } 
} 
+1

установка 'titleWebView.PageTitle' удалит любое' Binding'. Вместо этого выполните элемент '((IElementController)) .SetValueFromRenderer (TitleWebView.TitleSourceProperty, заголовок);' –

+0

Да, это правда. Я написал код без IDE. Я изменю это. Благодаря! –

+0

приятно, но навигационное событие больше не работает..Droid. –

Смежные вопросы