2017-12-13 29 views
1

UWP 애플리케이션이 있습니다.UWP를 사용하는 가장 좋은 방법은 x : ObservableCollection을 바인드하고 필터링하십시오.

피벗 컨트롤이있는 하나의보기.

하나의 연관된 ViewModel. 이 같은

한 모델 :

public ObservableCollection<Model> models = new ObservableCollection<Model>(); 

나는 각 모델에 피벗 컨트롤의 모델을 표시하려면 :

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

뷰 모델에서, 같은 모델 "모델"의 ObservableCollection에있다 카테고리로 in pivotitem. 예를 들어, PivotItem 1은 카테고리 1을 가진 모든 모델을 카운트 할 것이고 PivotItem 2는 카테고리 2를 가진 모든 모델을 카운트 할 것입니다 ...

솔루션은 카테고리별로 필터링 된 각 모델에 대해 새로운 ObservableCollection을 만드는 것이지만이 솔루션은 내 의견으로는별로. 예를 들어 수행합니다

public ObservableCollection<Model> modelCategory1 = models.Where(x => x.category == 1) [...] 

가 그 필터링 할 XAML에서 직접 해결책이 아니었다면 내가 궁금 이유. 이 Can I filter a collection from xaml?이 따르면

:

EDIT 그가보기에서

는, 피벗, 난이 5 pivotitems 각각 포함하는 하나의 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> 

EDIT 2 [UWP]CollectionViewSource Filter? 난 수 UWP에서 CollectionViewSource에서 t 필터, 그래서 같은 필터 결과를 포함 할 것입니다 새로운 ObservableCollection을 만들 수있을 것 같아요 :

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); 
+0

당신은 데이터 바인딩을 사용하는 경우 다른 속성을해야합니다 당신의 바인딩 할 피벗 헤더의 모델 클래스입니다. –

+0

UI 파트를 편집하기 위해 편집했습니다. – ArthurCPPCLI

답변

0

는있는 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> 
+0

내 목록에 모든 카테고리가 표시됩니다. 제 문제는 각 PivotItem의 카테고리에 따라 ViewModel.Models의 멤버를 표시하는 것입니다. 첫 번째 PivotItem은 "ViewModel.Models where category == 1 "이면 두 번째 PivotItem은"ViewModel.Models where category == 2 "등과 일치하는 모델 만 표시합니다. – ArthurCPPCLI