У меня две страницы. на первой странице есть изображение с привязкой к источнику, на второй странице есть метка с привязкой к тексту.
при навигации с использованием призмы навигация navigateTo на вторую страницу работает привязка метки, но когда я нажимаю кнопку "Назад" нана первой странице изображение исчезает, затем при повторном переходе ко второй странице текст метки становится пустым.
В обновлении добавлена дополнительная информация и некоторый код
На главной странице отображается список продавцов, при щелчке по элементу которых запускается команда, а в качестве параметра - Merchant obj, Первая страницаберет этот объект и выполняет другие операции с ним. Одна из функций - это скретч-игра, при нажатии на кнопку которой вы переходите на вторую страницу (скретч-игру), также связанную с командой и параметром Merchant Obj.
FirstВид страницы (страницы продавца):
<controls:CircleImage x:Name="logoimg"
TranslationY="-25" WidthRequest="100"
VerticalOptions="End"
BorderColor="#800080"
BorderThickness="2"
Source="{Binding Merchant.MerchantLogo}">
</controls:CircleImage>
Модель просмотра первой страницы:
internal class MerchantPageViewModel : AppMapViewModelBase, INavigationAware
{
private NojoomAppManager manager;
private readonly INavigationService _navigationService;
private Merchant _merchant;
public Merchant Merchant
{
get { return _merchant; }
set { _merchant = value; RaisePropertyChanged(nameof(Merchant)); }
}
public MerchantPageViewModel(INavigationService navigationService) : base(navigationService)
{
// Azure Mobile SDK
manager = NojoomAppManager.DefaultManager;
_navigationService = navigationService;
}
public new DelegateCommand<object> ScratchGameNavigateCommand =>
_scratchGameNavigateCommand ?? (_scratchGameNavigateCommand = new DelegateCommand<object>(ExecuteScratchNavigateCommand));
private async void ExecuteScratchNavigateCommand(object obj)
{
var p = new NavigationParameters();
p.Add("merchant", obj);
await NavigationService.NavigateAsync("ScratchGame", p);
}
public void OnNavigatedTo(INavigationParameters parameters)
{
Merchant = parameters.GetValue<Merchant>("merchant");
}
}
Вид второй страницы (скретч-игра)
<Label x:Name="Credit" FontSize="Large" FontAttributes="Bold" VerticalOptions="Center"></Label>
этот ярлык принимает свое значениеиз вызова API
код второй страницы:
private Merchant Merchant = new Merchant();
private Wallet Wallet = new Wallet();
public ScratchGame()
{
InitializeComponent();
manager = NojoomAppManager.DefaultManager;
}
private async Task Getwallet()
{
try
{
var wallets = await manager.GetWalletByIdAsync(Merchant.Id, Settings.UserId, false);
Wallet = wallets.First();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
public void OnNavigatedTo(INavigationParameters parameters)
{
Merchant = parameters.GetValue<Merchant>("merchant");
Task.Run(async () => { await Getwallet(); }).Wait();
Credit.text = Wallet.SilverStars.ToString();
}
Обновление 2 после дальнейшего исследования, когда я нажимаю кнопку возврата на второй странице, первая страница NavigatedTo являетсязапускается, но без параметра, который делает источник изображения нулевым.
Как мне это обработать и сделать параметр переданным снова или использованным снова при нажатии кнопки назад?