嵌套到ListView中的CollectionView

嵌套到ListView中的CollectionView,listview,xamarin.forms,click,collectionview,Listview,Xamarin.forms,Click,Collectionview,我已尝试在ListView中嵌套CollectionView。。。。 我能够可视化我需要的所有内容,但现在我无法在列表中单个CollectionView的单个单元格上访问单击事件。 这是我的xaml代码: <ListView x:Name="MainListView" VerticalOptions="FillAndExpand"> <ListView.ItemTemplate> <DataTemplat

我已尝试在ListView中嵌套CollectionView。。。。 我能够可视化我需要的所有内容,但现在我无法在列表中单个CollectionView的单个单元格上访问单击事件。 这是我的xaml代码:

  <ListView  x:Name="MainListView" VerticalOptions="FillAndExpand">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <CollectionView Margin="10" SelectionMode="Single" ItemsSource="{Binding singleList}" FlowDirection="LeftToRight" ItemsLayout="HorizontalList">
                            <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>

我想我必须在集合中使用SelectionChangedCommand事件,但我不明白。。。怎样!! 要帮忙吗

我想我必须在 收藏,但我不明白。。。怎样!!要帮忙吗

我不知道你不明白哪一部分,我会告诉你我将如何使用
选择更改命令

您的
集合视图
数据源
绑定到
单一列表
,因此
单一列表
应该是您的
模型
/
视图模型
,假设它是
MyViewModel
,然后在
选择ChangedCommand
中,您可以在单击时获取上一个/当前
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>

单声道
单机器人
单触式
单轨铁路
狒狒
卷尾猴
蓝猴
松鼠猴

嵌套ListViews是一个非常非常糟糕的想法。如何实现像Spotify或Apple Music这样的视图,在一个多行页面中的一行上显示更多元素?感谢您的回复,我知道之后的逻辑。。。但问题是CollectionView_SelectionChanged没有启动。。。可能是因为它是DataTemplate中的一个嵌套对象……好吧,让我做一些测试。@Blasco73它在我这边起作用,你能分享你的singleList的更多代码吗?@Blasco73好吧,你终于解决了它!在我解释如何使用SelectionChangedCommand时,请您记下我的答案好吗。代码也可以工作。然后我可以在问题解决后结束这个问题。@Blasco73没关系,我们在这里帮助您解决Xamarin表单问题。是的,CollectionView目前是实验性的,如中所述。