【问题标题】:Filter List view on item click - uwp项目点击过滤列表视图 - uwp
【发布时间】:2018-07-07 18:44:36
【问题描述】:

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

 <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;
            }
        }
    }

【问题讨论】:

    标签: c# listview uwp


    【解决方案1】:

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

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

    其次,您需要将CollectionViewSource 连接到您的ListView ItemsSource,并将其Source 设置为ObservableCollection Collection 属性。

    最后要做的是对ListViewItemSelected 做出反应,以过滤掉ObservableCollection 中的元素。由于数据绑定,它应该被反射回 ListView。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      相关资源
      最近更新 更多