gpt4 book ai didi

wpf - ICollectionView.Refresh 不会重新过滤集合

转载 作者:行者123 更新时间:2023-12-04 06:08:06 25 4
gpt4 key购买 nike

我有 3 个级联 ICollectionView s 在我的 View 模型中,其中一个依赖于另一个。
第一个不绑定(bind)到 View 上的控件,而是用作两个即将出现的作为主细节显示给用户的键过滤器。

我的问题是,我在主 Collection View 中附加了一个过滤谓词,但是当我调用 Refresh从中,它根本不会进入过滤器。我什至尝试从过滤谓词中抛出一个异常,所以如果调试器无法访问该代码,我仍然会看到它到达,但没有抛出异常。

我调用 Refresh 的原因是什么,但它没有带我进入过滤谓词 - 这意味着它没有重新创建 View ?

最佳答案

我找到了一个可行的解决方法,但我不喜欢它。

我正在做的是重置 Filter再次属性,就可以了。
我在 Reflector 中四处游荡,试图找到我遗漏的东西,但并没有取得很大的成功来澄清什么是怪癖。

private ICollectionView _Products;
public ICollectionView Products
{
get
{
if (_Products == null)
{
_Products =
CollectionViewSource.GetDefaultView(ProductsLibrary.SupportedProducts);
_Products.Filter = product => FilterProduct((Product)product);
}

return _Products;
}
}
private bool FilterProduct(Product product)
{
/**********************/
}

////////////////////

private void Search()
{
//Products.Refresh();
Products.Filter = product => FilterProduct((Product)product);
Categories.Refresh();
CategoryProducts.Refresh();
}

更新

我找到了一个更简单的解决方案。

我改了第一个 ICollectionView到一个简单的 IEnumerable<Product> ,返回一个 Linq 查询。

不知道为什么刷新不起作用,但是在其他 Collection View (绑定(bind)到 UI)上刷新确实起作用,因此, IEnumerable<Product> 的 linq 过滤器做这项工作。

关于wpf - ICollectionView.Refresh 不会重新过滤集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110223/

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