gpt4 book ai didi

mvvm - 如何使用 Collection View MVVM 进行分组?

转载 作者:行者123 更新时间:2023-12-02 02:21:02 24 4
gpt4 key购买 nike

我是 MVVM 的新手,我最近开始了一个清理我的代码隐藏的项目,我正在一点一点地将所有内容移动到 Model 和 ViewModel。

我的问题是,现在,您如何在没有任何代码的情况下使用 Collection View 进行分组?在 Stackoverflow 上阅读了类似问题的答案后,我以为我已经弄明白了,但我仍然无法让它工作。可能是一个愚蠢的错误,但如果有人可以查看我的代码并告诉我他们的想法,我将不胜感激。所有的反馈都是很好的反馈,我真的很想成为一名优秀的程序员:)

顺便说一句,列表是 Menu 类中的 ObservableCollection 类型。

             <CollectionViewSource x:Key="foods" Source="{Binding Items}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Category"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>




<ListBox x:Name="selectedMenuItem" Foreground="White" Grid.Column="0" Grid.Row="1" ItemsSource="{Binding Source={StaticResource foods}}"
DisplayMemberPath="Name" Background="{x:Null}" BorderThickness="0">
<ListBox.GroupStyle>
<x:Static Member="GroupStyle.Default"/>
</ListBox.GroupStyle>
</ListBox>




private CollectionViewSource _items;
private Menu _menu = new Menu();

public ICollectionView Items
{
get
{
if (_items == null)
{
_items = new CollectionViewSource {Source = new ObservableCollection<MenuItem>(_menu.MyMenu)};
}

return _items.View;
}
}

最佳答案

我假设您的问题是列表框中没有显示数据?尝试以编程方式将您的分组添加到 _items 并将您的 ListBox.ItemsSource 直接绑定(bind)到 Items:

public ICollectionView Items 
{
get
{
if (_items == null)
{
_items = new CollectionViewSource {Source = new ObservableCollection<MenuItem>(_menu.MyMenu)};
_items.GroupDescriptions.Add(new PropertyGroupDescription("Category"));
}

return _items.View;
}
}

<ListBox x:Name="selectedMenuItem" Foreground="White" Grid.Column="0" Grid.Row="1" ItemsSource="{Binding Items}"
DisplayMemberPath="Name" Background="{x:Null}" BorderThickness="0">
<ListBox.GroupStyle>
<x:Static Member="GroupStyle.Default"/>
</ListBox.GroupStyle>
</ListBox>

假设我没有修改我的代码,那么您可以删除 foods 资源。

关于mvvm - 如何使用 Collection View MVVM 进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158571/

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