आप XLabs से HybridWebView
उपयोग कर सकते हैं, और उपयोग जावास्क्रिप्ट इंजेक्शन अपने Xamarin नियंत्रण में आह्वान और क्लिक्स को संभालने के लिए। इंजेक्शन जावास्क्रिप्ट कोड capture
चरण पर एक क्लिक-ईवेंट श्रोता जोड़ सकता है। जब एक क्लिक का पता चला है तो यह सी # कोड पर जानकारी भेजने के लिए Native
कॉलबैक का उपयोग करता है। -
उदाहरण के लिए आप इस तरह एक कस्टम नियंत्रण को परिभाषित कर सकते हैं:
public class ClickEventArgs : EventArgs
{
public string Element { get; set; }
}
public class ClickableWebView : XLabs.Forms.Controls.HybridWebView
{
public event EventHandler<ClickEventArgs> Clicked;
public static readonly BindableProperty ClickCommandProperty =
BindableProperty.Create("ClickCommand", typeof(ICommand), typeof(ClickableWebView), null);
public ICommand ClickCommand
{
get { return (ICommand)GetValue(ClickCommandProperty); }
set { SetValue(ClickCommandProperty, value); }
}
public ClickableWebView()
{
LoadFinished += (sender, e) =>
InjectJavaScript(@"
document.body.addEventListener('click', function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
Native('invokeClick', 'tag='+target.tagName+' id='+target.id+' name='+target.name);
}, true /* to ensure we capture it first*/);
");
this.RegisterCallback("invokeClick", (string el) => {
var args = new ClickEventArgs { Element = el };
Clicked?.Invoke(this, args);
ClickCommand?.Execute(args);
});
}
}
नमूना XAML उपयोग
<local:ClickableWebView
Uri="https://google.com"
Clicked="Handle_Clicked"
/>
और नमूना कोड-पीछे
void Handle_Clicked(object sender, CustomWebView.ClickEventArgs e)
{
Xamarin.Forms.Application.Current.MainPage.DisplayAlert("WebView Clicked", e.Element, "Dismiss");
}
** आउटपुट **
वैकल्पिक रूप से, आप भी इस का उपयोग कर MVVM पैटर्न को लागू करने के ClickCommand
संपत्ति बाध्य कर सकते हैं।
धन्यवाद ... मैंने इसे चेक किया है और यह बहुत मदद करता है। लेकिन मैं जानना चाहता हूं कि इसे कैसे करना है मैं इस तरह कुछ सोच रहा था (http://arteksoftware.com/gesture-recognizers-with-xamarin-forms/) लेकिन मुझे कोई भाग्य नहीं था –