private void CreateInnerFilter(PropertyValidate propertyInfo, KvP property)
        {
            var filter = new PropertiesFilter(propertyInfo.PropertyType);

            switch (new FilterEditor(filter).ShowDialog())
            {
            case DialogResult.OK:
                property.Value = filter;
                bsFilters.ResetCurrentItem();
                break;

            case DialogResult.Cancel:
                break;

            case DialogResult.Abort:
                property.Value = null;
                bsFilters.ResetCurrentItem();
                break;
            }
        }
        private void CreateDateTimeFilter(PropertyValidate propertyInfo, KvP property)
        {
            Func <DateTime, bool> Between(DateTime from, DateTime to) => src => from <= src && src <= to;

            var intervalPicker = new IntervalPicker();

            switch (intervalPicker.ShowDialog())
            {
            case DialogResult.OK:
                property.Value = Between(intervalPicker.From, intervalPicker.To);
                bsFilters.ResetCurrentItem();
                break;

            case DialogResult.Cancel:
                break;

            case DialogResult.Abort:
                property.Value = null;
                bsFilters.ResetCurrentItem();
                break;
            }
        }