Я создал список с помощью xamarin.forms, я ищу способ не выделять ячейку просмотра при нажатии на список.
пожалуйста, проверьте изображение ниже. 
Заранее спасибо :)
Я создал список с помощью xamarin.forms, я ищу способ не выделять ячейку просмотра при нажатии на список.
пожалуйста, проверьте изображение ниже. 
Заранее спасибо :)
в вашем обработчике событий ListView SelectedItem вы можете сделать:
listview.SelectedItem = null;
это даст вам выделение при нажатии, но состояние будет только временным.
В вашем случае, я думаю, вам это понравится, потому что вы используете 2 Image вместо Button для стрелок справа с TapGestureRecognizer. Знаете ли вы, что Button имеет свойство Image? При нажатии на Button в Cell выбранное состояние Cell не должно меняться.
Просто поместите это в свою пользовательскую тему:
<item name="android:colorActivatedHighlight">@android:color/transparent</item>
Я хочу поделиться еще одним решением, которое мне очень нравится, потому что оно простое, его нужно реализовать один раз, и его действительно легко использовать в XAML.
Сначала мы должны реализовать собственное поведение. Это довольно просто:
public class DeselectItemBehavior : Behavior<ListView>
{
protected override void OnAttachedTo(ListView bindable)
{
base.OnAttachedTo(bindable);
bindable.ItemSelected += ListView_ItemSelected;
}
protected override void OnDetachingFrom(ListView bindable)
{
base.OnDetachingFrom(bindable);
bindable.ItemSelected -= ListView_ItemSelected;
}
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
((ListView)sender).SelectedItem = null;
}
}
Таким образом, мы просто регистрируемся на событие, когда поведение установлено, и отменяем его регистрацию, когда оно не установлено.
Само мероприятие использует подход Стефана Делькруа.
Теперь все, что вам нужно сделать в ListView, это добавить такое поведение:
<ListView ...>
<ListView.Behaviors>
<behaviors:DeselectItemBehavior />
</ListView.Behaviors>
Для отключения выделения ячеек списка в Android и iOS очень полезна эта ссылка.
https://gist.github.com/jessejiang0214/63b29b3166330c6fc083
ProjectName.Android/Resources/values/styles.xml
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="CustomTheme" parent="android:Theme.Holo.Light">
<item name="android:colorActivatedHighlight">@android:color/transparent</item>
</style>
</resources>
CustomAllViewCellRendereriOS.cs
using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer (typeof(ViewCell), typeof(MyAPP.iOS.CustomAllViewCellRendereriOS))]
namespace MyAPP.iOS
{
public class CustomAllViewCellRendereriOS : ViewCellRenderer
{
public override UIKit.UITableViewCell GetCell (Cell item, UIKit.UITableViewCell reusableCell, UIKit.UITableView tv)
{
var cell = base.GetCell (item, reusableCell, tv);
if (cell != null)
cell.SelectionStyle = UIKit.UITableViewCellSelectionStyle.None;
return cell;
}
}
}
Это кажется правильным и лучшим способом...!
Я использую: ListView SelectionMode = "None" в Xamarin.Forms.
Вы не можете, вы должны реализовать собственный рендеринг. Если вы просто установите для выбранного элемента значение null, он удалит выбранный цвет. Но вы сначала выбрали элемент, а затем снова отменили его (множественные события), но вы его не видели :-). Если вы включили эффект наклона на Windows Phone, наклон все равно произойдет из-за всего события!
Но я хотел бы, чтобы команда Xamarin Forms реализовала свойства CanSelect в списке.
Я хочу предложить вам другое решение. Можете добавить:
IsEnabled="False"
в виджете списка. В моем случае это решение работает хорошо.