Как сохранить значение в CollectionView - PullRequest
0 голосов
/ 10 июня 2019

У меня есть список CollectionView, и я хочу установить для каждого элемента индивидуальное значение, чтобы при щелчке он мог получить значение.

Но, похоже, такого свойства не существует, как это сделать?

<CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Grid Padding="5,5" HeightRequest="55">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="0.134*" />
                                <ColumnDefinition Width="0.489*" />
                                <ColumnDefinition Width="0.256*" />
                            </Grid.ColumnDefinitions>

                            <Grid.GestureRecognizers>
                                <TapGestureRecognizer CommandParameter="{Binding Id}" Tapped="Handle_Tapped" />
                            </Grid.GestureRecognizers>
                        </Grid>
                    </DataTemplate>
                </CollectionView.ItemTemplate>

Я не могу получить параметр, пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 10 июня 2019

CollectionView предлагает SelectedItem привязываемое свойство.Вы можете привязать это свойство и выполнять любые необходимые действия в модели представления, когда оно установлено.

Если вы хотите придерживаться события, CollectionView также предлагает событие SelectionChanged, которое будет запускаться каждый раз.время изменения SelectedItem и каждый раз он будет передавать выбранный элемент как часть аргументов.

Любой из них устранит необходимость иметь распознаватель жестов касания для каждой ячейки представления в CollectionView.

1 голос
/ 10 июня 2019

Когда вы нажимаете на элемент, аргумент события по умолчанию получает выбранные данные, поэтому вам не нужен идентификатор, чтобы получить все, что вам нужно сделать, это что-то вроде этого:

 private void Handle_Tapped(object sender, System.EventArgs e)
    {
     var clickedData=(e as ItemTappedEventArgs).Item as YourDataType;

    }

Где YourDataType - это Type, привязанное к вашему CollectionView.

0 голосов
/ 10 июня 2019

Попробуйте это

private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
    {
        Grid h = sender as Grid;

        var m = h.BindingContext as YourModelType;

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