void SetFilters(PropertyDescriptor property, FilterInfoList value)
 {
     if (property != null)
     {
         property.SetValue(settings, value);
     }
 }
        ObservableCollection <FilterItem> CreateContextFilterItems()
        {
            PropertyInfo filterValuePropertyInfo = DataUtils.GetFilterValuePropertyInfo(typeof(TEntity));
            PropertyInfo filterNamePropertyInfo  = DataUtils.GetFilterNamePropertyInfo(typeof(TEntity));

            if (filterValuePropertyInfo == null || filterNamePropertyInfo == null)
            {
                return(null);
            }

            PropertyInfo baseFilterNamePropertyInfo = filterNamePropertyInfo.PropertyType == typeof(string) ? null : DataUtils.GetFilterNamePropertyInfo(filterNamePropertyInfo.PropertyType);
            PropertyInfo baseFilterKeyPropertyInfo  = baseFilterNamePropertyInfo == null ? null : DataUtils.GetKeyPropertyInfo(typeof(TFilterEntity));

            if (filterNamePropertyInfo != null)
            {
                FilterInfoList filterInfos = new FilterInfoList();

                foreach (var filterEntity in settings.FilterEntities)
                {
                    string filterValue;
                    if (baseFilterNamePropertyInfo != null && baseFilterNamePropertyInfo.PropertyType == typeof(string) && baseFilterKeyPropertyInfo != null)
                    {
                        var currentBaseFilterNameValue = baseFilterNamePropertyInfo.GetValue(filterEntity);
                        filterValue = baseFilterKeyPropertyInfo.GetValue(filterEntity).ToString();

                        string filterCriteria = "[" + filterValuePropertyInfo.Name + "] = '" + filterValue + "'";
                        filterInfos.Add(new FilterInfo()
                        {
                            Name = (string)currentBaseFilterNameValue, FilterCriteria = filterCriteria, ImageUri = null
                        });
                    }
                    else if (filterNamePropertyInfo.PropertyType == typeof(string))
                    {
                        filterValue = filterValuePropertyInfo.GetValue(filterEntity).ToString();
                        string filterCriteria = "[" + filterValuePropertyInfo.Name + "] = '" + filterValue + "'";
                        filterInfos.Add(new FilterInfo()
                        {
                            Name = (string)filterNamePropertyInfo.GetValue(filterEntity), FilterCriteria = filterCriteria, ImageUri = null
                        });
                    }
                    else
                    {
                        return(null);
                    }
                }

                return(CreateFilterItems(filterInfos, true));
            }
            else
            {
                return(null);
            }
        }