如何解决如何将嵌套collectionView的ItemsSource属性绑定到其中包含的CollectionView的项目?
这个问题可能会让人很困惑,所以我会尽力澄清一下,因此基本上我在另一个CollectionView中有一个CollectionView,并且我想将第二个CollectionView中包含的视图的属性绑定到dataTemplate显示的单个对象的属性。的第一个collectionView。
我可以将第二个CollectionView的ItemsSource绑定到与第一个collectionView绑定的相同ObservableCollection,这将使我能够访问提到的ObservableCollection中包含的每个对象的属性,但是我想要的是仅将第二个CollectionView绑定到显示第二个CollectionView的第一个CollectionView的DataTemplate显示的对象。 我希望我能够正确解释它。
XAML代码:
<ContentPage.Resources>
<ResourceDictionary>
<selectors:FirstSelector x:Key="First"/>
<selectors:SecondSelector x:Key="Second"/>
</ResourceDictionary>
</ContentPage.Resources>
<renderers:GradientLayout
ColorsList="#FFFFFF,#FFFFFF"
Mode="ToBottomLeft"
Padding="10,50,10,0">
<ScrollView>
<StackLayout>
<CollectionView
ItemsSource="{Binding FirstList}"
ItemTemplate="{StaticResource First}"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
Margin="0,15">
<CollectionView.ItemsLayout>
<LinearItemsLayout
Orientation="Vertical"
ItemSpacing="15"/>
</CollectionView.ItemsLayout>
<CollectionView.Resources>
<DataTemplate x:Key="normal">
<Grid
HeightRequest="400"
HorizontalOptions="FillAndExpand"
ColumnDeFinitions="20*,30*,25*,25*"
RowDeFinitions="15*,70*,15*">
<Frame
Padding="0"
HasShadow="False"
BackgroundColor="Pink"
CornerRadius="30"
IsClippedToBounds="True"
Grid.Column="0"
Grid.Row="1"
Grid.ColumnSpan="4">
<CollectionView
ItemTemplate="{StaticResource Second}"
ItemsSource="{Binding Source={x:Reference home},Path=BindingContext.FirstList}"
BackgroundColor="Blue"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand">
<CollectionView.ItemsLayout>
<LinearItemsLayout
Orientation="Horizontal"
ItemSpacing="0">
</LinearItemsLayout>
</CollectionView.ItemsLayout>
<CollectionView.Resources>
<DataTemplate x:Key="normalTwo">
<Grid
WidthRequest="392"
BackgroundColor="Orange"
ColumnDeFinitions="100*"
RowDeFinitions="100*"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
Padding="0">
<Frame
BackgroundColor="Purple"
HasShadow="False"
CornerRadius="20"
Padding="0"
Grid.Column="0"
Grid.Row="0">
<Image
Margin="-2,0"
Source="source.jpg"
Aspect="AspectFill"
HeightRequest="200">
</Image>
</Frame>
</Grid>
</DataTemplate>
</CollectionView.Resources>
</CollectionView>
</Frame>
</Grid>
</DataTemplate>
</CollectionView.Resources>
</CollectionView>
</StackLayout>
</ScrollView>
</renderers:GradientLayout>
前面的代码显示了一个垂直的collectionView,其中FirstList作为ItemsSource,并且其中包含collectionView。第二个CollectionView具有FirstList作为ItemsSource,因此它显示的水平列表与第一个CollectionView一样长,这就是问题所在,我只希望它访问其中包含的DataTemplate的对象。
仅此,如果您需要更多信息,我将在收到您的请求后立即提供,非常感谢您的宝贵时间,祝您生活愉快。
解决方法
它显示与第一个CollectionView相同的水平列表,并且 这是问题,我只希望它访问该对象 包含其中的DataTemplate。
要解决此问题,我认为您的第二个CollectionView的itemSource不应绑定到ObservableCollection FirstList
。
如果它们绑定到相同的项,那么肯定有相同的长度。
我想绑定第二个视图中包含的视图的属性 通过CollectionView可以显示由 第一个collectionView的dataTemplate。
然后,可能在BindContext中应该有另一个包含individual object displayed by the dataTemplate of the first collectionView
的ObservableCollection。第二个collectionView应该绑定到此ObservableCollection。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。