Решение первое:
Использование Событие может передать значение обратно на предыдущую страницу.
Определение события в SecondPage:
public delegate void EventHandler(string status);
public event EventHandler EventPass;
Вызвать событие, когда страница исчезнет:
protected override void OnDisappearing()
{
base.OnDisappearing();
EventPass("Back Code");
}
В FirstPage, когда место Навигации нужно добавить событие здесь:
string title = "PageSecondParamater";
PageSecond pageSecond = new PageSecond(title);
pageSecond.EventPass += PageSecond_EventPass; ;
Navigation.PushAsync(pageSecond);
Теперь значение будетздесь можно передать:
private void PageSecond_EventPass(string status)
{
Title = status;
Console.WriteLine("---" + status);
}
Решение второе:
Использование Словарь свойств для хранения простых и небольших данныхв приложении, когда вход на страницу вызовет его, чтобы получить данные, из которых были сохранены.
На второй странице, где вы хотите хранить данные, написав ниже:
Application.Current.Properties ["value"] = valuedata;
Когда вернетесьна первую страницу, переопределите метод OnAppearing для обновления пользовательского интерфейса:
protected override void OnAppearing()
{
base.OnAppearing();
if (Application.Current.Properties.ContainsKey("value"))
{
var ValueGet = Application.Current.Properties ["value"] as DataType;
// do something with other things
}
}
Примечание: ViewModel, если хотите динамически обновлять данные, необходимо использовать INotifyPropertyChanged .
Пример реализации:
public class ObservableProperty : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
ViewModelBase предлагает реализовать ICommand как структуру словаря, такую как:
public abstract class ViewModelBase : ObservableProperty
{
public Dictionary<string,ICommand> Commands { get; protected set; }
public ViewModelBase()
{
Commands = new Dictionary<string,ICommand>();
}
}
Таким образом, все задачи в вашей ViewModel просто наследуют класс ViewModelBase и используют его:
class LoginViewModel : ViewModelBase
{
string userName;
string password;
public string UserName
{
get {return userName;}
set
{
userName = value;
OnPropertyChanged("UserName");
}
}
public string Password
{
get{return password;}
set
{
password = value;
OnPropertyChanged("Password");
}
}
#endregion
#region ctor
public LoginViewModel()
{
//Add Commands
Commands.Add("Login", new Command(CmdLogin));
}
#endregion
#region UI methods
private void CmdLogin()
{
// do your login jobs here
}
#endregion
}