gpt4 book ai didi

c# - GridView 或 ListView 中的不同对象类型

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:28 24 4
gpt4 key购买 nike

我目前正在尝试弄清楚如何在 GridView 中显示不同类型的对象,例如看这张图片:

右侧的最后一个元素与其他元素不同,所以如果我将一个 observablecollection 绑定(bind)到 GridView,我怎么能说最后一个元素显示在另一个布局中。

目前我正在使用这个 XAML 代码

<GridView x:Name="startView" ItemsSource="{Binding}" Grid.Column="1" Grid.Row="2" SelectionMode="None" Width="Auto">
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock x:Name="DetailTitle" Height="74" Text="{Binding Title}" />
<Image x:Name="Image" Height="Auto" Width="Auto" Margin="0" Stretch="None" Source="{Binding LocalCoverUrl}" Visibility="Collapsed" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="2" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>

和后面的代码:

ObservableCollection<Movie> recentlyStarted = await Api.RecentlyStarted(3);
startView.DataContext = recentlyStarted;

但我目前不知道如何让最后一个元素以不同的样式显示

最佳答案

简单的方法是将两种类型的对象作为不同的类(例如 MoviePicStyle + MoviePlainStyle。然后将您的 DataTemplate 移出 GridView,以便按类型拾取每个对象,例如

<Window.Resources>
<DataTemplate DataType="{x:Type ViewModel:MoviePicStyle}">
<StackPanel>
<TextBlock x:Name="DetailTitle" Height="74" Text="{Binding Title}" />
<Image x:Name="Image" Height="Auto" Width="Auto" Margin="0" Stretch="None" Source="{Binding LocalCoverUrl}" Visibility="Collapsed" />
</StackPanel>
<DataTemplate DataType="{x:Type ViewModel:MoviePlainStyle}">
...Different View...
</DataTemplate>
</Window.Resources>
<GridView...

关于c# - GridView 或 ListView 中的不同对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com