在 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 中做到这一点?请帮助我。
完成
此操作的最快方法是使用 Linq 筛选集合并将该结果传递给可观察集合。
若要执行此操作,应保留包含所有值的原始集合,可用于执行 Linq 筛选。
筛选后,将结果设置为可观察集合。