#c# #xamarin
Вопрос:
У меня есть приложение Tabbedpage, которое должно отправлять/передавать переменную «количество» (количество кликов) в MianPage.xaml.cs на страницу 1.xaml. Мне нужна метка на странице 1.xaml, чтобы показать «количество». Пожалуйста, дайте мне вашу идею, как я могу это исправить.
ниже приведена главная страница.xaml, которая представляет собой только текст и кнопку :
<TabbedPage
xmlns:local="clr-namespace:bottomtest;assembly=bottomtest"
x:Class="buttontest.MainPage">
<ContentPage Title="MainPage" >
<StackLayout>
<Label Text="Welcome to MainPage1 !"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" />
<Button Text="Push Me" Clicked="Button_Clicked" />
</StackLayout>
</ContentPage>
<NavigationPage Title="Page1" >
<x:Arguments>
<local:Page1 />
</x:Arguments>
</NavigationPage>
</TabbedPage>
и главная страница.xaml.cs, и куда я хочу отправить «количество», приведены ниже:
namespace buttontest
{
public partial class MainPage : TabbedPage
{
public MainPage()
{
InitializeComponent();
}
int count = 0;
void Button_Clicked(object sender, System.EventArgs e)
{
count ;
((Button)sender).Text = $"You Pushed {count} times.";
// something here that send "count" to Page1.xaml
// like NI.Text = String.Format("${0:.##}", count);
}
}
}
Page1.xaml-это просто ярлык для отображения «количества».:
<ContentPage
x:Class="bottomtest.Page1"
Title="Page1">
<StackLayout>
<Label Text="PAGE 1 here"
FontSize="Large"/>
<Label Text="$0.0"
x:Name="NI"
HorizontalOptions="CenterAndExpand"></Label>
</StackLayout>
</ContentPage>
Страница 1.xaml.cs находится ниже
namespace buttontest
{
public partial class Page1 : ContentPage
{
public Page1()
{
InitializeComponent();
}
}
}
Ответ №1:
Вы можете использовать MessageCenter для передачи значений.
Вот код страницы с вкладками 1:
public partial class TabbedPage1: TabbedPage
{
public TabbedPage1()
{
InitializeComponent();
}
public int count {get; set;}
private void Button_Clicked(object sender, EventArgs e)
{
count ;
((Button)sender).Text = $"You Pushed {count} times.";
MessagingCenter.Send<Object,int>(this, "Hi", count);
}
}
Вот код страницы 1:
public partial class Page1: ContentPage
{
public Page1()
{
InitializeComponent();
MessagingCenter.Subscribe<object, int>(this, "Hi", (sender, res) =>
{
NI.Text = Convert.ToString(res);
});
}
}
Вот скриншот страницы:
Комментарии:
1. Спасибо, что это работает. Могу ли я отправить несколько переменных (все двойные) через центр сообщений?
2. Вы можете получить более подробную информацию по этой ссылке ( docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/… )