#xamarin #xamarin.forms #data-binding
#c# #xaml #xamarin #xamarin.forms #xamarin.android
Вопрос:
У меня есть следующие функциональные возможности, приведенные ниже:
При нажатии на сведения я хочу, чтобы текст, отображаемый в contentview, отображался на новой странице сведений, созданной с помощью push async. Как я могу отправить параметры, содержащие информацию, указанную в содержимом, например, заголовок, категорию и описание.
У меня есть распознаватель жестов касания:
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
</Label.GestureRecognizers>
Затем это приводит к созданию новой страницы с кодом:
private async void TapGestureRecognizer_Tapped(object sender, EventArgs e)
{
await Navigation.PushAsync(new DetailsPage(user), true);
}
Итак, как мне связать метки, содержащие заголовок, описание и категорию, для отображения на новой странице, которая создается при нажатии?
Вот код xaml, стоящий за ярлыками:
<StackLayout>
<StackLayout Orientation="Horizontal">
<BoxView Color="LightGray"
WidthRequest="90"
HeightRequest="90"
HorizontalOptions="Center"
VerticalOptions="Center"/>
<StackLayout Padding="0">
<Label x:Name="Title" Text="Title"
FontSize="22"
FontFamily="Grotesk"
TextColor="Black"
Margin="10, -2, 0, 0"
VerticalOptions="Fill" />
<Label x:Name="Category" Text="Category"
FontSize="16"
FontFamily="Grotesk"
TextColor="Gray"
Margin="10, -2, 0, 0"
VerticalOptions="Fill" />
<Label x:Name="Desc" Text="Lorem Ipsum is simply dummy text of the printing and typesetting industry. etc.etc"
Margin="10, -4, 0, 0"
FontSize="15"
FontFamily="Latow"
VerticalOptions="Start"
MaxLines="3"/>
</StackLayout>
</StackLayout>
Ответ №1:
используйте Label
‘s BindingContext
private async void TapGestureRecognizer_Tapped(object sender, EventArgs e)
{
var label = (Label)sender;
// you will need to cast it to the correct type
var item = (MyClass)label.BindingContext;
// then pass it to your page
await Navigation.PushAsync(new DetailsPage(user,item), true);
}
Комментарии:
1. Спасибо вам! Как я могу затем извлечь заголовок, категорию и описание из элемента на моей странице сведений, чтобы отобразить их там? Я добавил код xaml за содержимым в моем вопросе
2.
item
объект должен содержать все необходимые данные, вам просто нужно установить BindingContext на вашей новой странице и использовать привязку данных в вашем XAML3. Как мне установить BindingContext в этом случае? Кажется, я не могу заставить ее работать
4.
this.BindingContext = TheParameterPassedOnTheConstructor;