public ItemListFilterViewModel(
            IItemFilter itemWhitelist,
            IItemFilter itemBlacklist,
            IItemService itemService)
        {
            itemWhitelist.FilterMode = FilterMode.Whitelist;
            ItemWhitelist            = itemWhitelist;
            itemBlacklist.FilterMode = FilterMode.Blacklist;
            ItemBlacklist            = itemBlacklist;

            this.FilterChanges = Observable.CombineLatest(
                itemWhitelist.FilterChanges,
                itemBlacklist.FilterChanges
                )
                                 .Select(filters => new Func <ItemEx, bool>((ItemEx item) => filters.All(filter => filter(item))));

            var tagPool = itemService.GetTags(FilterChanges).AsObservableList();

            itemWhitelist.SetTagpool(tagPool);
            itemBlacklist.SetTagpool(tagPool);

            this.Tagpool = tagPool;
        }