Xamarin формы выбрать карусель - PullRequest
0 голосов
/ 26 марта 2020

Я изучаю Xamarin, я хотел бы получить значение выбранного элемента карусели. Я не могу добавить ItemSelected как в виде списка.

Вот мой код Xaml:

<CarouselView x:Name="NewsList"  >
    <CarouselView.ItemTemplate >
        <DataTemplate>
            <StackLayout>
                <Frame HasShadow="True"
                       BorderColor="DarkGray"
                       CornerRadius="5"
                       Margin="20"

                       HeightRequest="300"
                       HorizontalOptions="Center"
                       VerticalOptions="CenterAndExpand">
                                            <StackLayout>
                                                <Label Text="{Binding NewsName}"
                               FontAttributes="Bold"
                               FontSize="Large"
                               HorizontalOptions="Center"
                               VerticalOptions="Center" />
                                                <Image Source="{Binding NewsImageUrl}"
                               Aspect="Fill"
                               HeightRequest="150"
                               WidthRequest="150"
                               HorizontalOptions="Center" />
                                                <Label Text="{Binding ProviderAndDate}"
                               HorizontalOptions="Center" />

                                            </StackLayout>
                                        </Frame>
            </StackLayout>
        </DataTemplate>
    </CarouselView.ItemTemplate>
</CarouselView>

Вот функция, которую я хотел бы использовать после выбора моего элемента: Получить значение NewsName и ProviderAndDate

  private void OnFrameTapped(object sender, EventArgs e)
        {
            Console.WriteLine("SelectedNewsName" + "SelectedNewsProviderAndDate");
        }

Спасибо за помощь

1 Ответ

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

CarouselView является своего рода другим элементом управления, когда речь заходит о визуализации и событиях, чем ListView, поэтому вам придется придумать какое-то иное решение тоже

Самый простой способ сделать что-то похожее на выбранный Событие item здесь потребует настройки с вашей стороны, чтобы добавить событие в.

Хороший обходной путь - просто использовать свойство CurrentItem или передать параметр CommandParameter в Tap of Frame!

<StackLayout>
   <StackLayout.GestureRecognizers>
   <TapGestureRecognizer Command="{Binding CarouselItemTapped,Source={x:Reference currentPage}}" CommandParameter="{Binding .}"/>
   </StackLayout.GestureRecognizers>
<Frame ...... />

А затем присвойте своей текущей странице контента x:Name

<ContentPage ..... X:Name="currentPage"

Теперь в вашем xaml.cs

Public ICommand CarouselItemTapped{ get; set; }

В конструкторе:

CarouselItemTapped= new Xamarin.Forms.Command((selectItem)=>{//Perform action here});

Не стесняйтесь чтобы получить ответ, если у вас есть вопросы

Подробнее о командах: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/commanding

Подробнее о CarouselView: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/carouselview/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...