Полагаю, мне нужно использовать событие SelectionChangedCommand внутри Коллекции, но я не понимаю ... как !! Некоторая помощь?
Не знаете, какую часть вы не понимаете, я покажу вам, как бы я использовал SelectionChangedCommand
.
Ваше collectionView
связывание dataSource
для singleList
, поэтому singleList
должен быть списком ваших model
/ ViewModel
, скажем, MyViewModel
, тогда в SelectionChangedCommand
вы можете получить предыдущий / текущий MyViewModel
, который вы нажимаете:
private void CollectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
myViewModel previousModel = e.PreviousSelection.FirstOrDefault() as myViewModel;
myViewModel currentModel = e.PreviousSelection.FirstOrDefault() as myViewModel;
string previous = (e.PreviousSelection.FirstOrDefault() as myViewModel)?.Name;
string current = (e.CurrentSelection.FirstOrDefault() as myViewModel)?.Name;
//perform your own actions.
}
Обновление, код в моем xaml:
<ListView x:Name="MainListView" VerticalOptions="FillAndExpand" HasUnevenRows="True">
<ListView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>mono</x:String>
<x:String>monodroid</x:String>
<x:String>monotouch</x:String>
<x:String>monorail</x:String>
</x:Array>
</ListView.ItemsSource>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<CollectionView Margin="10" SelectionMode="Single" SelectionChanged="CollectionView_SelectionChanged" FlowDirection="LeftToRight" ItemsLayout="HorizontalList">
<CollectionView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>Baboon</x:String>
<x:String>Capuchin Monkey</x:String>
<x:String>Blue Monkey</x:String>
<x:String>Squirrel Monkey</x:String>
</x:Array>
</CollectionView.ItemsSource>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="10" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Frame BackgroundColor="White" Grid.RowSpan="2" CornerRadius="5" Padding="10">
<Image Source="Binding ImageName" Aspect="AspectFill" HeightRequest="100" WidthRequest="100" />
</Frame>
<Label Grid.Column="1" Text="Binding Name" FontAttributes="Bold" />
<Label Grid.Row="1" Grid.Column="1" Text="Binding Date" VerticalOptions="End" />
<Image Grid.Row="2" Grid.Column="0" Source="shop" HeightRequest="20" WidthRequest="20" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>