Я пытался передать значения между двумя страницами содержимого - MainPage и Page1 в моем приложении Xamarin, но безуспешно. Вот мой MainPage.xaml
<ContentPage.BindingContext>
<local:FindPerimeter/>
</ContentPage.BindingContext>
<StackLayout>
<Label Text="A side here"/>
<Entry Placeholder="A side" Text="{Binding Aside}"/>
<Button Text="Next page" Clicked="Button_Clicked"/>
</StackLayout>
Код кнопки позади
private async void Button_Clicked(object sender, EventArgs e) => await Navigation.PushModalAsync(new Page1());
FindPerimeter.cs
public class FindPerimeter : ViewModelBase
{
string a_side;
public string Aside
{
get => a_side;
set
{
if (a_side == value) return;
a_side = value;
OnPropertyChanged();
Perimeter = Calculate(a_side).ToString();
}
}
string perimeter;
public string Perimeter
{
get => perimeter;
set
{
if (perimeter == value) return;
perimeter = value;
OnPropertyChanged();
}
}
double Calculate(string a)
{
return 2 * double.Parse(a);
}
}
V
iewModelBae.cs
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
и код Page1.xaml
<ContentPage.BindingContext>
<local:FindPerimeter/>
</ContentPage.BindingContext>
<ContentPage.Content>
<StackLayout>
<Label Text="Perimeter is :"/>
<Label Text="{Binding Perimeter}"/>
</StackLayout>
</ContentPage.Content>
Поэтому я хочу передать значение Perimeter между MainPage.xaml и Page1.xaml, но он каждый раз пуст. Я думаю, это потому, что я создаю пыльник BindingContext в Page1.xaml, но я не знаю, как это исправить. Единственный способ, который я нашел, - сделать свойство Perimeter static
.