Передача данных на текущей xaml-странице с помощью кнопки Xamarin - PullRequest
0 голосов
/ 19 марта 2020

У меня есть Crousell-Page в приложении Xamarin.Forms. Вы можете провести между несколькими картинками на этой странице. Теперь я хочу определить кнопку, которая выполняет действие в файле с выделенным кодом. Дело в том, что я хочу передать информацию , какая картинка отображается в момент нажатия кнопки .

. Буду очень признателен за полезные советы.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Дело в том, что я хочу передать информацию о том, какое изображение отображается в момент нажатия кнопки.

Как сказал Джейсон, CarouselPage - это просто коллекция ContentPages, Вы можете получить текущую контентную страницу по ContentPage page = carousepages.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>

Вы можете получить текущий Page BoxView по следующему коду:

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


    }
0 голосов
/ 19 марта 2020

, если вы используете CarouselView, это легко. Свойство CurrentItem вернет текущий выбранный элемент

protected void ButtonClick(object sender, EventArgs e)
{
  var item = (MyModel)MyCarouselView.CurrentItem;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...