2017-02-01 3 views
0

Это похоже на действительно примитивную проблему и должно быть разрешено с измененным свойством. Но вот мой вопрос:Xamarin Forms Listview disbale cell highlight

  • Пользователь выбирает ячейку из списка.
  • Я переопределяю цвет фона для ячейки и задаю соответствующий цвет (у нас разные цветовые темы).
  • Когда я возвращаюсь к своему списку и снова выбираю тот же элемент, ячейка проходит через тот же код, что и раньше, но выделенный цвет по умолчанию.

Один из способов обойти это, что я видел, - NOT, установив SelectedItem на нуль. Что я делаю, потому что, если я этого не сделаю, и я вернусь к своему списку, я не могу выбрать тот же элемент.

Вы можете подумать, что у Xamarin есть свойство в списке HighlightCellSelection, и я могу просто установить его на false. Anywho, так или иначе?

Вот мой код:

ListView.ItemSelected += (s, e) => 
       { 
        ((ListView)s).BackgroundColor = App.IsDarkThemeEnabled() ? Xamarin.Forms.Color.Black : Xamarin.Forms.Color.White; 
        XamarinMobile.ViewModels.GridCellViewModel cell = (XamarinMobile.ViewModels.GridCellViewModel)e.SelectedItem; 
        ((ListView)s).SelectedItem = null; 
       } 

Кроме того, в моем связывающим контексте, который делает то же самое:

this.Tapped += (s, e) => { 
     this.View.BackgroundColor = App.IsDarkThemeEnabled() ? Xamarin.Forms.Color.Black : Xamarin.Forms.Color.White; 
    }; 

ответ

0

В основном то, что происходило, состояло в том, что свойство не было установлено, если я установил его так же, как и раньше. Это было исправлено, просто изменив его на transparent, а затем желаемый цвет.

0

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

public class ViewCellRenderer : Xamarin.Forms.Platform.iOS.ViewCellRenderer 
{ 
    public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv) 
    { 
     var cell = base.GetCell(item, reusableCell, tv); 
     cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
     cell.BackgroundColor = UIColor.Clear; 
     return cell; 
    } 
} 
Смежные вопросы