项目点击过滤列表视图 - uwp

时间:2018-01-29 05:42:00

标签: c# listview uwp

我有一个列表视图,显示所选学生的主要科目和选修科目。现在我想在点击列的每一行时过滤列表视图。过滤应基于主要主题和可选主题。表示过滤的listview行包含任何主要主题或可选主题。

 <ListView x:Name="ItemListView"  Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
        <ListView.ItemTemplate>
            <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding StudentName}" TextAlignment="Left" FontSize="20"  Width="50"/>
                    </StackPanel>
                    <StackPanel>
                        <TextBlock Text="{Binding MainSub}" FontSize="20" TextAlignment="Center"   />
                    </StackPanel>
                    <StackPanel>
                        <TextBlock Text="{Binding OptionalSub}" FontSize="20" TextAlignment="Center" />
                    </StackPanel>
                    <StackPanel >
                        <TextBlock Text="{Binding RollNo}" FontSize="20" TextAlignment="Center" />
                    </StackPanel>    
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

  protected override async void OnNavigatedTo(NavigationEventArgs e)
    {
        ItemDetails messageData = new ItemDetails();
        ItemListView.ItemsSource = messageData.Collection;
        ItemListView.SelectedIndex = 0;
    }
   public class ItemDetails
    {
        public ItemDetails()
        {
            MatchList item;

            item = new MatchList();
            item.StudentName = "FF";
            item.MainSub= selectedSub[0].ToString();//English
            item.OptionalSub =selectedSub[1].ToString();//Sanskrit
            item.RollNo = 922;
            Collection.Add(item);

            item = new MatchList();
            item.StudentName = "DD";
            item.MainSub= selectedSub[0].ToString();//English
            item.OptionalSub =selectedSub[2].ToString();//Arabic
            item.RollNo = 82;
            Collection.Add(item);

             item = new MatchList();
            item.StudentName = "CC";
            item.MainSub= selectedSub[3].ToString();//Science
            item.OptionalSub =selectedSub[2].ToString();//Arabic
            item.RollNo = 12;
            Collection.Add(item);

             item = new MatchList();
            item.StudentName = "BB";
            item.MainSub= selectedSub[3].ToString();//Science
            item.OptionalSub =selectedSub[4].ToString();//Moral Science
            item.RollNo = 22;
            Collection.Add(item);

             item = new MatchList();
            item.StudentName = "AA";
            item.MainSub= selectedSub[0].ToString();//English
            item.OptionalSub =selectedSub[1].ToString();//Sanskrit
            item.RollNo = 322;
            Collection.Add(item);
        }
        List<MatchList> collection = new List<MatchList>();
        public List<MatchList> Collection
        {
            get
            {
                return this.collection;
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

在这个示例代码中似乎还有几件事尚未完成......

首先,我建议您使用ObservableCollection作为实际的Collection属性 - 这是必需的,以便在集合中添加或删除元素时通知您的View。< / p>

其次,您需要将CollectionViewSourceListView ItemsSource相关联,并将其Source设置为ObservableCollection收藏属性。

最后要做的是对ItemSelected的{​​{1}}做出反应,以过滤掉ListView中的元素。由于数据绑定,它应该反映回ListView。