从 ViewModel MVVM Xamarin 上的 CustomMap 访问 x:Name

Acces x:Name from CustomMap on ViewModel MVVM Xamarin

我制作了一个 CustomMap,如果我将我的代码放在 xaml.cs 中,它可以正常工作,但我正在使用 MVVM 模式。

<ContentPage.Content>
        <local:CustomMap x:Name="customMap" MapType="Street" />
 </ContentPage.Content>

我需要在我的 ViewModel 上访问 x:Name 才能执行此操作,例如:

var pin = new CustomPin
            {
                Type = PinType.Place,
                Position = new Position(37.0990243, -7.9982581),
                Label = "Xamarin San Francisco Office",
                Address = "394 Pacific Ave, San Francisco CA",
                Name = "Xamarin",
                Url = "http://xamarin.com/about/",
            };

            customMap.CustomPins = new List<CustomPin> { pin };
            customMap.Pins.Add(pin);
            customMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(37.0990243, -7.9982581),
                 Distance.FromMiles(150)));

我找到了解决方案:

在 Xaml 上:

<ContentPage.Content>
    <ContentView Content="{Binding customMap}"/>
</ContentPage.Content>

在 ViewModel 上:

public CustomMap customMap { get; private set; }

在 ViewModel 构造函数上:

customMap = new CustomMap();
customMap.MapType = MapType.Street;