在 Uwp 中使用 MVVM 筛选列表视图

本文关键字:筛选 列表 视图 MVVM Uwp | 更新日期: 2023-09-27 18:17:11

View

<StackPanel>
    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Row="2">
        <RadioButton Content="Verified" IsChecked="{Binding Path=RadioAChecked,Mode=TwoWay}" Foreground="{StaticResource foretwo}"/>
        <RadioButton Content="Not Verified" IsChecked="{Binding Path=RadioBChecked,Mode=TwoWay}" Foreground="{StaticResource foretwo}"/>
    </StackPanel>
    <ListView ItemsSource="{Binding BillList}">
    <ListView.ItemTemplate>
        <DataTemplate>
           <StackPanel>
              <TextBlock Text="{Binding Bill_Type}" Style="{StaticResource textblock}"/>
              <TextBlock Text="{Binding Bill_Status}" Style="{StaticResource textblock}"/>
              <TextBlock Text="{Binding Bill_Date}" Style="{StaticResource textblock}"/>
           </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
    </ListView>
</StackPanel> 

视图模型

 public class BillViewModel : BindableBase
{
   IBillDataServices _service;
    public BillViewModel(IBillDataServices service)
    {
        _service = service;
        _billList = _service.GetAllBill();
    }
    private ObservableCollection<BillModel> _billList;
    public  ObservableCollection<BillModel> BillList
    {
        get
        {
            return _billList;
        } 
        set
        {
            _billList = value;
            RaisePropertyChanged("BillList");
        }
    } 
    private bool _radioAChecked;
    public bool RadioAChecked
    {
        get { return _radioAChecked;  }
        set
        {
            if (_radioAChecked == true)
            {
            }
        }
    } 
    private bool _radioBChecked;
    public bool RadioBChecked
    {
        get { return _radioBChecked; }
        set
        {
            _radioBChecked = true;
            if (_radioBChecked == true)
            {

            }
        }
    }

我的视图模型中有一个名为_billList的集合(ViewModel(。该集合包含 Bill_Type、Bill_Status 和 Bill_Date。在这里,我需要在列表视图中进行过滤。我在集合中有Bill_Status的值,例如("是"和"否"(。如果我选中第一个单选按钮,那么Bill_Status = "是"的行应该绑定到 listview。如果选中第二个单选按钮,则 Bill_Status = "否" 行应绑定到 ListView。如何在 UWP 中做到这一点?请帮助我。

在 Uwp 中使用 MVVM 筛选列表视图

完成

此操作的最快方法是使用 Linq 筛选集合并将该结果传递给可观察集合。

若要执行此操作,应保留包含所有值的原始集合,可用于执行 Linq 筛选。

筛选后,将结果设置为可观察集合。