使用TransformToTree时的子节点过滤

时间:2019-12-09 02:45:03

标签: wpf treeview dynamic-data

Treeview示例为here

看到this条评论后应用了过滤器。

var filter = SearchHints.WhenValueChanged(t => t.SearchText)
                        .Select(BuildFilter);

_cleanUp = employeeService.Employees.Connect()
                .TransformToTree(employee => employee.BossId, Observable.Return((Func<Node<EmployeeDto, int>, bool>) DefaultPredicate))
                .Filter(filter)
                .Transform(node => new EmployeeViewModel(node, SearchHints))
                .Bind(out _employeeViewModels)
                .Subscribe();
...

private Func<Node<EmployeeDto, int>, bool> BuildFilter(string searchText)
{
    if (string.IsNullOrEmpty(searchText)) return node => true;

    return node => node.Item.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase);
}

但是父级不符合过滤条件。 因此,在树视图中看不到符合条件的子节点。

https://user-images.githubusercontent.com/19144210/70210521-3f12d500-1776-11ea-9173-5e932c00583c.png

https://user-images.githubusercontent.com/19144210/70210530-4508b600-1776-11ea-87ea-8b869619f940.png

我该如何处理?

1 个答案:

答案 0 :(得分:0)

使用WhenAnyValue代替WhenValueChanged

我不知道为什么,但是WhenValueChanged会导致很多问题。