UWPのWebViewにWebリンクをドラッグ&ドロップしてWebページを開けるようにしたい
UWPのWebViewにWebリンクをドラッグ&ドロップしてWebページを表示させたいです。
以下のようなコードで実装したのですが、1回目は成功するのですがWebページが表示されたあとはドラッグを受け付けなくなります。
2回目以降もドラッグ&ドロップを受け付けるようにしたいのですが、どのようにしたらよいのでしょうか?
<Page
x:Class="Test.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Test"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<WebView x:Name="WebViewControl" AllowDrop="True" DragOver="WebView_DragOver" Drop="WebView_Drop"/>
</Grid>
</Page>
using System;
using Windows.ApplicationModel.DataTransfer;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace Test
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void WebView_DragOver(object sender, DragEventArgs e)
{
if (e.DataView.Contains(StandardDataFormats.WebLink))
{
e.AcceptedOperation = DataPackageOperation.Link;
e.Handled = true;
}
}
private async void WebView_Drop(object sender, DragEventArgs e)
{
if (e.DataView.Contains(StandardDataFormats.WebLink))
{
var uri = await e.DataView.GetWebLinkAsync();
this.WebViewControl.Source = uri;
e.Handled = true;
}
}
}
}
ターゲット: UWP (Windows10, version 1809)
開発環境: VisualStudio 2017
(2019-02-03追記)
Q. JavaScriptを使えば対応できる?
WebView Class | Remarks に、次のような記述がありました。
As indicated in the Events table, WebView doesn’t support most of the
user input events inherited from UIElement, such as KeyDown, KeyUp,
and PointerPressed. A common workaround is to use InvokeScriptAsync
with the JavaScript eval function to use the HTML event handlers, and
to use window.external.notify from the HTML event handler to notify
the application using WebView.ScriptNotify.
ユーザー入力はJavaScriptを追加してそのイベントを活用する方法があると読めますが、ドラッグ&ドロップもこの方法で実現できるのでしょうか?
当方JavaScriptの知識がほぼないため、例示していただけるとうれしいです。