我有一个应用程序,我显示任务。
当你双击一个任务时,你会进入一个详细信息页面。
在此页面上,您需要查看任务的实时位置:它正在正确获取API的数据。
这是一张Map,它显示了正确的位置。
在“Laatse Locatie”和按钮之间需要是地址。
<!--Links Beneden-->
<VerticalStackLayout Grid.Row="1" Grid.Column="0" HorizontalOptions="CenterAndExpand">
<Label Text="Live Location" FontAttributes="Bold" FontSize="21" TextDecorations="Underline"/>
<model:BindableMap x:Name="map" WidthRequest="320" HeightRequest="150" Margin="0,16,0,0"
MapType="Street" IsZoomEnabled="True" IsScrollEnabled="True" HorizontalOptions="Center"
ItemsSource="{Binding Positions}" MapSpan="{Binding MapSpanPosition}">
<model:BindableMap.ItemTemplate>
<DataTemplate x:DataType="model:MapData">
<maps:Pin Label="Fiets Locatie"
Address="{Binding LatestAdress}"
Type="Place"
Location="{Binding Locatie}"/>
</DataTemplate>
</model:BindableMap.ItemTemplate>
</model:BindableMap>
<Label Margin="0,16,0,0" FontSize="14" LineHeight="1.5" Text="Laatse Locatie:" FontAttributes="Bold" />
<Label Margin="0,0,0,0" FontSize="12" LineHeight="1.5"
HorizontalTextAlignment="Start" LineBreakMode="WordWrap"
Text="{Binding Positions[0].LatestAdress}">
</Label>
<Button Text="routebeschrijving" Command="{Binding GoToWazeCommand}" />
</VerticalStackLayout>
上面的代码是我正在使用的代码。如果我正在调试,我删除了Positions[0]. LatestAddress中的0,并写回0。我看到了最新的地址。这很奇怪,因为我在Map上使用了相同的对象。
CODE视图模型:
[RelayCommand]
async void GetLatestLocation()
{
try
{
IsBusy = true;
IsRefreshing = true;
var data = await _meldingService.GetBikeLocationAsync(SelectedMelding.BurgerInformation.Fietsmodellen[0]);
if (data != null)
{
Positions = new ObservableCollection<MapData>();
Positions.Add(new MapData()
{
Long = data.lastLng,
Lat = data.lastLat,
LatestAdress = data.lastAddress,
Locatie = new Location(data.lastLat, data.lastLng),
TrackerId = data.serial,
});
MapSpanPosition = MapSpan.FromCenterAndRadius(Positions[0].Locatie, Distance.FromMeters(150));
};
return;
}
catch (Exception ex)
{
await Application.Current.MainPage.DisplayAlert("Error!", ex.Message, "OK");
}
finally
{
IsBusy = false;
IsRefreshing = false;
}
//Other wise give error melding
}
可能知道问题的人?
先谢谢你了
1条答案
按热度按时间2wnc66cl1#
听起来好像
Positions[0].LatestAdress
在运行时不会更新。具体来说,我怀疑
[0]
不会在向集合中添加项时重新求值。可能是Maui XAML bug。
方法#1
在添加所有元素之后设置
Positions
:方法#2
添加一个新属性,并将其设置为
Positions[0]
的内容,然后引用该属性: