Hello,
Welcome to our Microsoft Q&A platform!
There are several methods to achieve this based on your requirement. I list two ways below:
1.pass data by constructor of the next page. Please refer to the following code:
BmiPage.xaml.cs
public partial class BmiPage : ContentPage
{
BmiViewModel viewModel;
public BmiPage()
{
InitializeComponent();
viewModel = new BmiViewModel();
BindingContext = viewModel;
}
private async void Button_Clicked(object sender, EventArgs e)
{
await Navigation.PushModalAsync(new HomePage(viewModel.Bmi));
}
}
HomePage.xaml.cs
public partial class HomePage : ContentPage
{
public double Bmi { get; set; }
public HomePage(double bmi )
{
InitializeComponent();
Bmi = bmi;
BindingContext = this;
}
}
2.create a new Viewmodel for HomePage
and set BindingContext
for it.
create Viewmodel HomeViewModel.cs
for HomePage:
public class HomeViewModel: INotifyPropertyChanged
{
double bmi;
public double Bmi
{
set { SetProperty(ref bmi, value); }
get { return bmi; }
}
public HomeViewModel(double bmi) {
Bmi = bmi;
}
bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (Object.Equals(storage, value))
return false;
storage = value;
OnPropertyChanged(propertyName);
return true;
}
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
BmiPage.xaml.cs
public partial class BmiPage : ContentPage
{
BmiViewModel viewModel;
public BmiPage()
{
InitializeComponent();
viewModel = new BmiViewModel();
BindingContext = viewModel;
}
private async void Button_Clicked(object sender, EventArgs e)
{
//await Navigation.PushModalAsync(new HomePage(viewModel.Bmi));
await Navigation.PushModalAsync(new HomePage {
BindingContext = new HomeViewModel(viewModel.Bmi)
});
}
}
Best Regards,
Jessie Zhang
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.