gpt4 book ai didi

c# - 使用 ICollectionView 过滤 ObservableCollection

转载 作者:行者123 更新时间:2023-12-03 19:37:59 27 4
gpt4 key购买 nike

我将 ObservableCollection 绑定(bind)到 dataGrid,现在我想过滤显示的数据 我发现我需要使用 ICollectionView 但我不确定如何使用我的 MVVM 模式添加 ICollectionView

我的代码简化如下:

public class MainViewModel : ViewModelBase , IBarcodeHandler
{
public ObservableCollection<TraceDataItem> TraceItemCollectionViewSource { get; set; }
}

我的 XAML

    <Window xmlns:controls="clr-namespace:Mentor.Valor.vManage.RepairStation.Controls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
<DataGrid Grid.Row="2" ColumnWidth="*" ItemsSource="{Binding TraceItemCollectionViewSource , Mode=TwoWay , UpdateSourceTrigger=PropertyChanged}" RowStyle="{StaticResource TraceRowStyle}" IsReadOnly="True" Name="TraceDataGrid" Margin="5,5,5,5" Padding="5,5,5,5" AutoGenerateColumns="False">
</Window>

如何在此处添加 ICollectionView 以便对 View 应用过滤?

最佳答案

你需要:

public class MainViewModel : ViewModelBase, IBarcodeHandler
{
public ICollectionView TraceItemCollectionView
{
get { return CollectionViewSource.GetDefaultView(TraceItemCollectionViewSource); }
}

public ObservableCollection<TraceDataItem> TraceItemCollectionViewSource { get; set; }
}

然后,在代码的某处(可能在构造函数中)添加您的过滤器:

TraceItemCollectionView.Filter = o =>
{
var item = (TraceDataItem) o;

//based on item, return true if it should be visible, or false if not

return true;
};

并且,在 XAML 中,您需要更改对 TraceItemCollectionView 属性的绑定(bind)。

关于c# - 使用 ICollectionView 过滤 ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com