使用Xamarin按钮在当前xaml页面上传输数据



我在Xamarin.Forms应用程序中有一个Crousell页面。您可以在此页面上的多张图片之间滑动。我现在想定义一个按钮,它在代码隐藏文件中执行一个操作。关键是,我想传输信息单击按钮的那一刻显示的图片

如果你能给我一些有益的建议,我将不胜感激。

重点是,我想在点击按钮的那一刻传输显示哪个图片的信息。

正如Jason所说,CarouselPage只是ContentPages的集合,您可以通过contentpage page=carousepages来获取当前的contentpage。CurrentPage;我做了一个你可以看看的样品:

<CarouselPage
x:Class="CarouselPageNavigation.MainPage"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Name="carousepages">
<ContentPage x:Name="redcontentpage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS, Android" Value="0,40,0,0" />
</OnPlatform>
</ContentPage.Padding>
<StackLayout>
<Label
FontSize="Medium"
HorizontalOptions="Center"
Text="Red" />
<Button
x:Name="btn1"
Clicked="Btn1_Clicked"
Text="get current page" />
<BoxView
x:Name="redbox"
HeightRequest="200"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"
WidthRequest="200"
Color="Red" />
</StackLayout>
</ContentPage>
<ContentPage x:Name="greencontentpage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS, Android" Value="0,40,0,0" />
</OnPlatform>
</ContentPage.Padding>
<StackLayout>
<Label
FontSize="Medium"
HorizontalOptions="Center"
Text="Green" />
<Button
x:Name="btn2"
Clicked="Btn1_Clicked"
Text="get current page" />
<BoxView
x:Name="greenbox"
HeightRequest="200"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"
WidthRequest="200"
Color="Green" />
</StackLayout>
</ContentPage>
<ContentPage x:Name="nluecontentpage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS, Android" Value="0,40,0,0" />
</OnPlatform>
</ContentPage.Padding>
<StackLayout>
<Label
FontSize="Medium"
HorizontalOptions="Center"
Text="Blue" />
<Button
x:Name="btn3"
Clicked="Btn1_Clicked"
Text="get current page" />
<BoxView
x:Name="bluebox"
HeightRequest="200"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"
WidthRequest="200"
Color="Blue" />
</StackLayout>
</ContentPage>

您可以通过以下代码获得当前页面框视图:

private  void Btn1_Clicked(object sender, System.EventArgs e)
{
ContentPage page = carousepages.CurrentPage;
StackLayout stack = (StackLayout)page.Content;
BoxView box = (BoxView)stack.Children[2];                 

}

如果您使用的是CarouselView,这很容易。CurrentItem属性将返回当前选择的项目

protected void ButtonClick(object sender, EventArgs e)
{
var item = (MyModel)MyCarouselView.CurrentItem;
}

最新更新