Я пытаюсь привязать результат EventArgs события MapLongClicked к свойству «Location» в ViewModel в Xamarin Forms, используя пакет nuget GoogleMaps.
Проблема в том, что я могу получить доступ только к тем EventArgs в XAML-коде позади.
Поскольку я использую MVVMCross, я нашел что-то о привязке полей, но это не для кода позади.
Мой MapPage выглядит сейчас так:
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MapPage : MvxContentPage
{
public MapPage()
{
InitializeComponent();
map.UiSettings.ZoomControlsEnabled = false;
map.MapLongClicked += (sender, e) =>
{
//((MapViewModel)map.BindingContext).Location = new Microsoft.Azure.Documents.Spatial.Point(e.Point.Longitude, e.Point.Latitude);
var pin = new Pin
{
Type = PinType.SearchResult,
Position = new Position(e.Point.Latitude, e.Point.Longitude),
Label = string.Format(e.Point.Latitude.ToString("0.000") + " / " + e.Point.Longitude.ToString("0.000"))
};
map.Pins.Add(pin);
};
}
}
XAML:
<mvx:MvxContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mvx="clr-namespace:MvvmCross.Forms.Views;assembly=MvvmCross.Forms"
xmlns:maps="clr-namespace:Xamarin.Forms.GoogleMaps;assembly=Xamarin.Forms.GoogleMaps"
xmlns:behaviors="clr-namespace:XamFormsMaps.Core.Behaviors;assembly=XamFormsMaps.Core"
x:Class="XamFormsMaps.Core.Pages.MapPage">
<ContentPage.Content>
<StackLayout>
<maps:Map
x:Name="map"
WidthRequest="320"
HeightRequest="200"
IsShowingUser="true"
MapType="Hybrid">
<maps:Map.Behaviors>
<behaviors:MapBehavior ItemsSource="{Binding Parkings}" />
</maps:Map.Behaviors>
</maps:Map>
</StackLayout>
</ContentPage.Content>
</mvx:MvxContentPage>
Я попробовал закомментированный вариант, но он дает мне ошибку приведения, поэтому у меня нет больше идей.
Кто-нибудь знает, как я могу отправить переменную из кода XAML в ViewModel?