【发布时间】:2021-11-20 00:09:12
【问题描述】:
我仍在通过开发小型 UWP 应用来学习 C#。 基本上,我的应用程序会获取我拥有的 Steam 游戏并将它们异步添加到 ObservableCollection。这会将游戏添加到 Gridview。
XAML:
<GridView
x:Name="BasicGridView"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource ImageTemplate}"
IsItemClickEnabled="True"
ItemClick="BasicGridView_ItemClick"
SelectionMode="Single"
Margin="15, 0, 0, 0"
>
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="Margin" Value="0, 15, 15, 0"/>
</Style>
</GridView.ItemContainerStyle>
</GridView>
C#代码:
// My games list
public ObservableCollection<Game> OwnedGames { get; set; }
// Binding my games list to the GridView
BasicGridView.DataContext = OwnedGames;
现在我的下一步是添加过滤。 经过一番搜索,似乎解决方案是使用 CollectionViewSource。
这就是我最终的结果:
public ICollectionView OwnedGamesView { get; set; }
CollectionViewSource OwnedGamesViewSource = new CollectionViewSource();
OwnedGamesViewSource.Source = OwnedGames;
OwnedGamesView = OwnedGamesViewSource.View;
因为我现在要使用 CollectionView,所以我像这样更改了 GridView 的 Datacontext:
BasicGridView.DataContext = OwnedGamesView;
运行应用程序时,一切仍然像这样工作,所以最后一步是自行执行过滤:
OwnedGamesView.Filter(...);
但是在我的情况下这种方法不存在。 它未在 UWP 的 ICollectionView API 参考中列出: https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.data.icollectionview?view=winrt-20348
所以我想知道如何仍然可以在 UWP 应用程序中进行这项工作? 或者有什么可能的替代方案?
我希望我的问题很清楚? 提前致谢! :)
【问题讨论】:
标签: c# xaml filter gridview uwp