#c# #xamarin #xamarin.forms #xamarin.forms.collectionview
Вопрос:
Я хотел бы вызвать функцию, когда была выбрана ячейка представления коллекции (созданная в cs).
Вот код:
new StackLayout { Orientation = StackOrientation.Horizontal,
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
HeightRequest = 200,
Children = {
new CollectionView {
HorizontalOptions = LayoutOptions.FillAndExpand,
SelectionMode = SelectionMode.Single,
ItemTemplate = MainPage.cv.ItemTemplate,
ItemsLayout = MainPage.cv.ItemsLayout,
ItemsSource = MainPage.jsonList.Where(x => x.Giorno == MainPage.day amp;amp; x.Pasto == Pasto_Array[i]),
}
//.SelectionChanged =CheckDuplicazioni_SelectionChanged;
}
}
Как вы можете видеть, я пытался сделать это с помощью прокомментированного кода, но это не работает.
В файле XAML я использовал функцию SelectionChanged, и она сработала, почему в cs id этого не происходит?
Жду вашего отзыва, спасибо.
Комментарии:
1. c# не позволяет назначать обработчики событий в инициализаторах свойств. Либо используйте команду SelectionChanged, либо назначьте свой CollectionView переменной и назначьте обработчик SelectionChange после инициализатора свойства
Ответ №1:
Вы можете сделать это, сохранив CollectionView
экземпляр в переменной
var collectionView = new CollectionView()
{
HorizontalOptions = LayoutOptions.FillAndExpand,
SelectionMode = SelectionMode.Single,
ItemTemplate = MainPage.cv.ItemTemplate,
ItemsLayout = MainPage.cv.ItemsLayout,
ItemsSource = MainPage.jsonList.Where(x => x.Giorno == MainPage.day amp;amp; x.Pasto == Pasto_Array[i]),
};
collectionView.SelectionChanged = CheckDuplicazioni_SelectionChanged;
new StackLayout
{
Orientation = StackOrientation.Horizontal,
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
HeightRequest = 200,
Children = {
collectionView
}
};