Я хотел бы использовать веб-просмотр для просмотра PDF-файла, но что-то должно отсутствовать.
Пользовательский код веб-просмотра:
class CustomWebView : WebView
{
public static readonly BindableProperty UriProperty = BindableProperty.Create(nameof(Uri), typeof(string), typeof(CustomWebView), default(string));
public string Uri {
get { return (string)GetValue(UriProperty); }
set { SetValue(UriProperty, value); }
}
}
Код CustomWebViewRenderer:
class CustomWebViewRenderer : WebViewRenderer
{
public CustomWebViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var customWebView = Element as CustomWebView;
Control.Settings.AllowUniversalAccessFromFileURLs = true;
Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file:///android_asset/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
}
}
}
XAML код:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button HeightRequest="100"
WidthRequest="200"
HorizontalOptions="Center"
VerticalOptions="Center"
Clicked="Button_Clicked" Grid.Row="0"/>
<!--<local:CustomWebView Grid.Row="1" Uri="test.pdf" x:Name="PdfViewer" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>-->
<local:CustomWebView Grid.Row="1" x:Name="PdfViewer" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>
mainpage.xaml.cs:
private void Button_Clicked(object sender, EventArgs e)
{
PdfViewer.Uri = "test.pdf";
}
Если я установил URI из XAML, PDF-файл отображается, но если я установил его из кода за это не ' не работает.
Как я могу установить PDF из кода позади? Использование отладки при установке pdf из кода не происходит CustomWebViewRenderer.OnElementChanged и, следовательно, не обновляется, как это сделать?
Заранее спасибо.