是否可以从 ObservableCollection 中隐藏 elementis ?毛伊岛网络

问题描述 投票:0回答:1

我正在使用 MVVM 和 Ms Toolkit。 我正在 CollectionView 中显示一个集合..但我(如果可能)想隐藏“已删除项目”(由模型上的已删除标志设置)。 这就是为什么我在选项卡页面中使用全局“保存”过程,但隐藏我删除的内容会很好。 我尝试过Where(p=p.deleted==false) 但是:

  1. 不适用于 ObcservableCollection
  2. 返回一个IEnumerable

搜索谷歌和文档,.

mvvm maui hide observablecollection
1个回答
0
投票

由于您没有显示代码,我将提供更通用的答案。

您可以向模型类添加

IsDeleted
属性:

public partial class MyModel : ObservableObject
{
    [ObservableProperty]
    private string _name;

    [ObservableProperty]
    private bool _isDeleted;
}

然后,在您的 ViewModel 中,您将保留您的

ObservableCollection<MyModel>
:

public partial class MyViewModel : ObservableObject
{
    [ObservableProperty]
    private ObservableCollection<MyModel> _myItems;
}

最后,在您的视图中,您将绑定到

IsDeleted
属性并使用 MCT 中的 InvertedBoolConverter 来显示或隐藏已删除的项目:

<ContentPage.Resources>
    <mct:InvertedBoolConverter x:Key="InvertedBoolConverter" />
</ContentPage.Resources>

<CollectionView ItemsSource="{Binding MyItems}">
    <CollectionView.ItemTemplate>
        <DataTemplate x:DataType="models:MyModel">
            <Label
                Text="{Binding Name}"
                IsVisible="{Binding IsDeleted, Converter={StaticResource mct:InvertedBoolConverter}}" />
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>
© www.soinside.com 2019 - 2024. All rights reserved.