gpt4 book ai didi

c# - DataGrid过滤,多输入,MVVM,C#

转载 作者:行者123 更新时间:2023-12-03 10:31:36 25 4
gpt4 key购买 nike

因此,我对此感到有些烦恼:我有一个要过滤的DataGrid。我正在使用ICollectionView作为ItemsSource。我有几个ComboBoxes我想缩小数据范围,然后我还有一个TextBox我希望用户进一步缩小数据范围。

我的问题是,我可以让TextBox过滤数据,也可以让ComboBox过滤数据,但是我无法让它们一起工作以进一步过滤数据。一次只能使用一个过滤器。

public static string FilterText
{
get { return _filterText; }
set
{
_filterText = value;
ICollectionView.Filter = FilterTB;
}
}

public static Model1 PublicModelProperty
{
get { return _publicModelProperty; }
set
{
_publicModelProperty = value;
ICollectionView.Filter = FilterCB;
}
}

public static bool FilterTB(object names)
{
Model2 name = names as Model2;
if(!string.IsNullOrEmpty(FilterText))
{
return name.Property1.Contains(FilterText) ||
name.Property2.Contains(FilterText);
}
else
{
return true;
}
}

public static bool FilterCB(object names)
{
Model2 name = names as Model2;
if(!string.IsNullOrEmpty(PublicModelProperty.Property))
{
return name.Property3.Contains(PublicModelProperty.Property);
}
else
{
return true;
}
}

最佳答案

您应该同时使用FilterText和PublicModelProperty进行过滤

public static string FilterText
{
get { return _filterText; }
set
{
_filterText = value;
ICollectionView.Filter = FilterBoth;
}
}

public static Model1 PublicModelProperty
{
get { return _publicModelProperty; }
set
{
_publicModelProperty = value;
ICollectionView.Filter = FilterBoth;
}
}

public static bool FilterBoth(object names)
{
Model2 name = names as Model2;
if (!string.IsNullOrEmpty(FilterText))
{
if (!name.Property1.Contains(FilterText) &&
!name.Property2.Contains(FilterText))
return false;
}
if (!string.IsNullOrEmpty(PublicModelProperty.Property))
{
if (!name.Property3.Contains(PublicModelProperty.Property))
return false;
}
return true;
}

关于c# - DataGrid过滤,多输入,MVVM,C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60370868/

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