在页面加载之前设置传递的参数

问题描述 投票:0回答:1

我已将xamrin.form.maps移至MVVM,并将我的xaml设置为

<viewModels:CustomMap IsShowingUser="True"  x:Name="customMap"  MapPosition="{Binding MyPosition}" CustomPins="{Binding PinCollection}" />

我的customMap类

public static readonly BindableProperty MapPositionProperty = BindableProperty.Create(
            nameof(MapPosition),
            typeof(Position),
            typeof(CustomMap),
            new Position(0, 0),
            propertyChanged: (b, o, n) =>
            {
                Console.WriteLine("here");
                ((CustomMap)b).MoveToRegion(MapSpan.FromCenterAndRadius(
                            (Position)n, Distance.FromMiles(.05)));

            });

public Position MapPosition
{
    get { return (Position)GetValue(MapPositionProperty); }
    set { SetValue(MapPositionProperty, value); }
}

从第一页开始,我正在向地图发送信号。如果我在VM的构造函数中设置MapPosition可以正常工作,则问题是在一切绑定之前将lat和lng传递到了构造函数,否则它将不会更新。

在视图模型中,我正在收集参数以设置位置。

public override async void OnNavigatedTo(INavigationParameters parameters)
{
    if (parameters.ContainsKey("mapLocation"))
    {
        var mapLocation = parameters.GetValue<MapLocation>("mapLocation");
        myPosition = new Position(mapLocation.Lat, mapLocation.Lng);
    }
}
mvvm xamarin.forms prism xamarin.forms.maps
1个回答
0
投票

这与属性更新的时间无关。

您将MapPosition绑定到MyPosition,我想这是一个属性。为了使MVVM工作,此MapPosition必须通知它已更改,通常看起来像([documentation of INotifyPropertyChanged.PropertyChanged

© www.soinside.com 2019 - 2024. All rights reserved.