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); } }