ListView.ItemSelected
またはListView.ItemTapped
を使用している場合は、先日同じ問題が発生しました。私のための解決策は、それらのいずれかを使用せず、代わりにListView
内のViewCell
にTapGestureRecognizer
を添付することでした。 ViewCellがバインドされているオブジェクトにIsSelected
プロパティを追加して、クリックしたアイテムの背景色を変更できるようにしました。
public class SomePage : ContentPage {
private SomeModel _selectedModel; //It would be best to put this into your ViewModel
...
public SomePage() {
ListView list = new ListView {
ItemTemplate = new DataTemplate(() => {
ViewCell cell = new ViewCell {
View = new ContentView()
};
cell.View.GestureRecognizers.Add(new TapGestureRecognizer {
Command = new Command(() => {
if(_selectedModel != null) { _selectedModel.IsSelected = false; }
SomeModel model = (SomeModel)cell.BindingContext;
model.IsSelected = true;
_selectedModel = model;
})
}
return cell;
}
}
}
}
私はGestureRecognizerで追加できるようになる前に、この解決策はうまくいきましたが、cell.Viewを設定する必要がありました。だから私はちょうどcell.View = new ContentViewのようなことをしなければならなかった。 { コンテンツ=ラベル、 パディング=新しい厚さ(10、0) };ジェスチャー認識機能を追加する前に – Arthurdent510