Увеличение значения в шаблоне xaml ListView Data Xamarin Forms - PullRequest
0 голосов
/ 21 октября 2018

Я разрабатываю простое социальное приложение, я хочу увеличить количество лайков при нажатии на сердечное изображение, но не могу, потому что оно находится в DataTemplate.Мой XAML:

<ListView BackgroundColor="#802891" x:Name="feedList" IsPullToRefreshEnabled="true" HasUnevenRows="true" SeparatorVisibility="None" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds=".5, .0, .99999, .97">
        <ListView.ItemTemplate>
            <DataTemplate>
                <local:MyViewCell>
                     <StackLayout VerticalOptions="FillAndExpand" Orientation="Horizontal">
                                         <Image HorizontalOptions="FillAndExpand" Source="{Binding imageHeart}" HeightRequest="20">
                                                        <Image.GestureRecognizers>
                                                        <TapGestureRecognizer Command="{Binding selectImage}" CommandParameter"{Binding id}"/>
                                           </Image.GestureRecognizers>
                                       </Image>
                             <Label Text="{Binding Likes}" x:Name="likesImage" TextColor="Gray" HorizontalOptions="FillAndExpand" />
                      </StackLayout>
                </local:MyViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

1 Ответ

0 голосов
/ 21 октября 2018

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

Если это то, что вы делаете, но значение не обновляется на экране, вам может потребоватьсяреализовать интерфейс INotifyPropertyChanged на вашем объекте.

Поскольку в вашем вопросе добавлено не так много кода, я предполагаю, что ваш класс называется FeedItem.Затем сделайте следующее:

public class FeedItem : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private int _likes;

    public int Likes
    {
        get => _likes;

        set
        {
            _likes = value;

            if (PropertyChanged != null)
            {
                    PropertyChanged(this, new 
                        PropertyChangedEventArgs(nameof(Likes)));
            }
        }
    }
}

Здесь возможна некоторая оптимизация, также обязательно ознакомьтесь с документами Microsoft для этого: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/data-bindings-to-mvvm

Чтобы сделать вашу жизнь еще проще,Возможно, вы захотите взглянуть на пакет PropertyChanged.Fody NuGet, который может сгенерировать для вас весь стандартный код.

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