private void initFilterData() { if (FilterCurrentData == null || !FilterCurrentData.IsTypeInitialized) { string valuePropertyBindingPath = getValuePropertyBindingPath(AssignedDataGridColumn); bool typeInitialized; Type valuePropertyType = getValuePropertyType( valuePropertyBindingPath, getItemSourceElementType(out typeInitialized)); FilterType filterType = getFilterType( valuePropertyType, isComboDataGridColumn(), isBetweenType()); FilterOperator filterOperator = FilterOperator.Undefined; string queryString = String.Empty; string queryStringTo = String.Empty; FilterCurrentData = new FilterData( filterOperator, filterType, valuePropertyBindingPath, valuePropertyType, queryString, queryStringTo, typeInitialized, DataGridColumnExtensions.GetIsCaseSensitiveSearch(AssignedDataGridColumn)); } }
private bool isBetweenType() { return(DataGridColumnExtensions.GetIsBetweenFilterControl(AssignedDataGridColumn)); }
private string getValuePropertyBindingPath(DataGridColumn column) { string path = DataGridColumnExtensions.GetFilterMemberPathProperty(column); if (path == null) { path = String.Empty; if (column is DataGridBoundColumn) { DataGridBoundColumn bc = column as DataGridBoundColumn; path = (bc.Binding as Binding).Path.Path; } else if (column is DataGridTemplateColumn) { DataGridTemplateColumn tc = column as DataGridTemplateColumn; object templateContent = tc.CellTemplate.LoadContent(); if (templateContent != null && templateContent is TextBlock) { TextBlock block = templateContent as TextBlock; BindingExpression binding = block.GetBindingExpression(TextBlock.TextProperty); path = binding.ParentBinding.Path.Path; } else if (templateContent != null && templateContent is Button) { Button block = templateContent as Button; BindingExpression binding = block.GetBindingExpression(Button.ContentProperty); path = binding.ParentBinding.Path.Path; } } else if (column is DataGridComboBoxColumn) { DataGridComboBoxColumn comboColumn = column as DataGridComboBoxColumn; path = null; Binding binding = ((comboColumn.SelectedValueBinding) as Binding); if (binding == null) { binding = ((comboColumn.SelectedItemBinding) as Binding); } if (binding == null) { binding = comboColumn.SelectedValueBinding as Binding; } if (binding != null) { path = binding.Path.Path; } if (comboColumn.SelectedItemBinding != null && comboColumn.SelectedValueBinding == null) { if (path != null && path.Trim().Length > 0) { if (DataGridComboBoxExtensions.GetIsTextFilter(comboColumn)) { path += "." + comboColumn.DisplayMemberPath; } else { path += "." + comboColumn.SelectedValuePath; } } } } } return(path); }
private bool IsTextContainsColumn() { return(DataGridColumnExtensions.GetContainsSearchProperty(AssignedDataGridColumn)); }