public ReactionFilterType FilterModelToVMType(ReactiveFilterBase filter)
		{
			if (filter is FileReactiveFilter)
			{
				return ReactionFilterType.Files;
			}
			else if (filter is FolderReactiveFilter)
			{
				return ReactionFilterType.Folder;
			}
			else
			{
				return ReactionFilterType.Unknown;
			}
		}
		public FilterViewModelBase(FolderReactionModel reactionModel, ReactiveFilterBase filter)
		{
			ReactionModel = reactionModel;
			Filter = filter;
			_CompositeDisposable = new CompositeDisposable();

			FilterType = Filter.OutputItemType.ToString();


			IncludeFilterText = new ReactiveProperty<string>("");

			IncludeFilterPatterns = Filter.IncludeFilter
				.ToReadOnlyReactiveCollection()
				.AddTo(_CompositeDisposable);



			ExcludeFilterText = new ReactiveProperty<string>("");

			ExcludeFilterPatterns = Filter.ExcludeFilter
				.ToReadOnlyReactiveCollection()
				.AddTo(_CompositeDisposable);

			/*
			SampleItems = FolderFilter.ObserveProperty(x => x.FolderFilterPattern)
				.Throttle(TimeSpan.FromSeconds(0.25))
				.SelectMany(x => FolderFilter.DirectoryFilter(ReactionModel.WorkFolder))
				.Select(x => $"/{x.Name}")
				.ToReadOnlyReactiveCollection()
				.AddTo(_CompositeDisposable);
				*/

			AddIncludeFilterTextCommand = IncludeFilterText
				.Select(x => Filter.IsValidFilterPatternText(x))
				.ToReactiveCommand<string>();

			AddIncludeFilterTextCommand.Subscribe(AddIncludeFilterText);


			AddExcludeFilterTextCommand = ExcludeFilterText
				.Select(x => Filter.IsValidFilterPatternText(x))
				.ToReactiveCommand<string>();

			AddExcludeFilterTextCommand.Subscribe(AddExcludeFilterText);
		}