У моего приложения есть WebView для отображения некоторых контактных данных. Он имеет ссылку на веб-сайт, который я хочу загрузить извне, используя Device.OpenUri()
. Я использую FreshMvvm, и я хочу перехватить событие Navigating
из WebView в ViewModel и отменить действие по умолчанию, которое загрузит внешнюю страницу в WebView.Как перехватить событие WebView Navigating в ViewModel
Я попытался с помощью Corcav.Behaviors плагина, который делает называть мой ViewModel команды:
<WebView
HorizontalOptions="Fill"
VerticalOptions="FillAndExpand"
Source="{Binding WebViewSource}">
<b:Interaction.Behaviors>
<b:BehaviorCollection>
<b:EventToCommand
EventName="Navigating"
Command="{Binding NavigatingCommand}"
CommandParameter="{Binding}"/> <!-- what goes here -->
</b:BehaviorCollection>
</b:Interaction.Behaviors>
</WebView>
Но я не уверен, что CommandParameter должно быть - мне нужен URI канала связи, который прослушивается, и Я не знаю, как предотвратить предотвращение поведения по умолчанию.
Это лучший подход или я должен смотреть на альтернативу?
Нет необходимости указывать CommandParameter, NavigatingCommand должен иметь тип DelegateCommand, tappedItem - свойство элемента аргумента. –
rauland
@rauland, когда я использую этот подход, то есть оставляя CommandParameter, я ничего не передаю в качестве параметра - даже при указании 'object' в качестве типа параметра. –