我有一个UWP应用程序。

具有枢轴控件的一个 View 。

一个关联的ViewModel。

这样的一个模型:

class Model
{
    public int Category { get; set; }
}

在ViewModel中,有一个“模型”模型的ObservableCollection,例如:
public ObservableCollection<Model> models = new ObservableCollection<Model>();

我想在数据透视控件中显示模型,其中每个数据模型按数据透视项目中的类别分类。例如,PivotItem 1将归类为类别1的所有模型,PivotItem 2将归类为类别2的所有模型,依此类推...

一种解决方案是为按类别过滤的每个模型创建新的ObservableCollection,但我认为该解决方案仍然有些繁琐。例如:
public ObservableCollection<Model> modelCategory1 = models.Where(x => x.category == 1) [...]

这就是为什么我想知道是否没有直接从XAML进行筛选的解决方案。

编辑:

在他看来,在Pivot中,我有5个枢轴项,每个枢轴项包含一个ListView
<Pivot>
    <PivotItem>
        <ListView ItemsSource="{x:Bind ViewModel.Models}" />
    </PivotItem>
    <PivotItem>
        <ListView ItemsSource="{x:Bind ViewModel.Models}" />
    </PivotItem>
    <PivotItem>
        <ListView ItemsSource="{x:Bind ViewModel.Models}" />
    </PivotItem>
    <PivotItem>
        <ListView ItemsSource="{x:Bind ViewModel.Models}" />
    </PivotItem>
    <PivotItem>
        <ListView ItemsSource="{x:Bind ViewModel.Models}" />
    </PivotItem>
</Pivot>

编辑2:

根据这个Can I filter a collection from xaml?和这个:[UWP]CollectionViewSource Filter?我无法从UWP的CollectionViewSource进行过滤,所以我想我必须创建一个新的ObservableCollection,其中将包含类似Filter的结果:
private ObservableCollection<Model> _modelsCategory1;
public ObservableCollection<Model> ModelsCategory1
{
    get { return _modelsCategory1; }
    set { _modelsCategory1= value; NotifyPropertyChanged();
}

和 :
var cat1 = from fobjs in Models
         where fobjs.Category == 1
         select fobjs;
ModelsCategory1  = new ObservableCollection<Model>(cat1);

最佳答案

在现有代码中执行此操作,将类别属性绑定(bind)到ListViewItem,

<PivotItem>
    <ListView ItemsSource="{x:Bind ViewModel.Models}">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="data:Model">
                <TextBlock Text="{x:Bind Category}"/>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</PivotItem>

关于c# - UWP使用x :Bind and filter ObservableCollection的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47794479/

10-13 08:33