#c# #xaml #xamarin #button #xamarin.forms
#c# #xaml #xamarin #кнопка #xamarin.forms
Вопрос:
Когда пользователь нажимает кнопку избранного, кнопка заполняется цветом. Форма кнопки будет иметь форму сердца. Пожалуйста, предложите мне ваше ценное предложение для достижения этой цели. Я приложил скриншот кнопки, пожалуйста, обратитесь,
Комментарии:
1. используете ли вы какую-либо модель для отображения избранного. Используете ли вы в listview
2. @Prasanth, Да, я привязал свойство isFavorite к кнопке.
3. Вам нужно отобразить в ListView?
4. @Prasanth, Нет, я не использую listview для отображения кнопки избранного.
5. тогда это должно быть легко. Я обновил в ответе внутри действия кнопки в вашем классе viewmodel, основываясь на свойстве isFavorite selection, изменил изображение
Ответ №1:
Исходя из вашего вопроса, вам нужны два изображения, которые вам нравятся, заполненные и незаполненные. Я думаю, сначала свойство ‘isFavorite’ должно быть false. В вашей ViewModel внутри кнопки срабатывает действие
private void ButtonActionForFavouriteTriggered(object seletecedButtonItem)
{
System.Diagnostics.Debug.WriteLine("favourite button clickked");
var selectedList = (Result)seletecedButtonItem;
if (selectedList.isFavorite == "Fav.png")
{
// update api or local DB whatever on here
selectedList.isUserFavorite = false;
selectedList.isFavorite = "unFav.png"; // this will update in UI - changes from favorite image into unfavorite image
}
else
{
// update api or local DB whatever on here
selectedList.isUserFavorite = true;
selectedList.favourite = "Fav.png"; // this will update in UI
}
}
Здесь ‘Result’ — это моя модель, а внутри вашей модели вы можете использовать интерфейс ‘INotifyPropertyChanged’, подобный этому.
public class Result: INotifyPropertyChanged
{
public int id { get; set; }
public string country { get; set; }
public string name { get; set; }
public bool isUserFavorite { get; set; }
//Note: If you want to change any thing without reload cells, use this type and inherit 'INotifyPropertyChanged'
// Example: Favourite and UnFavourite button action, tapping any event change any text from cell
public string abbr {
get { return _abbr; }
set { _abbr = value; OnPropertyChanged("abbr"); }
}
public string area { get; set; }
public string largest_city { get; set; }
public string capital { get; set; }
public string isFavourite
{
get { return _fav; }
set {
_fav = value; OnPropertyChanged("isFavourite");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public string _fav;
public string _abbr;
private void OnPropertyChanged(string v)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(v));
}
}
и в xaml, внутри listview или какого-либо другого;
<Button Grid.Column="3" x:Name="buttonFavourite" BackgroundColor="Transparent" Image="{Binding isFavourite}" Command="{Binding Source={x:Reference MyCollectionPage}, Path=BindingContext.FavouriteButtonAction}" CommandParameter="{Binding .}"/>