Example #1
0
        private void HandleListFilterType()
        {
            if (FilterCurrentData.Type != FilterType.List)
            {
                return;
            }

            var comboBox = this.Template.FindName("PART_ComboBoxFilter", this) as ComboBox;
            var column   = AssignedDataGridColumn as DataGridComboBoxColumn;

            if (comboBox == null || column == null)
            {
                return;
            }

            if (DataGridComboBoxExtensions.GetIsTextFilter(column))
            {
                FilterCurrentData.Type = FilterType.Text;
                InitControlType();
            }
            else //list filter type
            {
                BindingOperations.SetBinding(comboBox, ComboBox.ItemsSourceProperty,
                                             BindingOperations.GetBinding(column, ComboBox.ItemsSourceProperty));

                comboBox.RequestBringIntoView += SetComboBindingAndHanldeUnsetValue;
            }
        }
Example #2
0
        private static string GetValuePropertyBindingPath(DataGridColumn column)
        {
            string path = String.Empty;

            if (column is DataGridBoundColumn)
            {
                var bc = column as DataGridBoundColumn;
                path = (bc.Binding as Binding).Path.Path;
            }
            else if (column is DataGridTemplateColumn)
            {
                var tc = column as DataGridTemplateColumn;

                object templateContent = tc.CellTemplate.LoadContent();

                if (templateContent != null && templateContent is TextBlock)
                {
                    var block = templateContent as TextBlock;

                    BindingExpression binding = block.GetBindingExpression(TextBlock.TextProperty);

                    path = binding.ParentBinding.Path.Path;
                }
            }
            else if (column is DataGridComboBoxColumn)
            {
                var comboColumn = column as DataGridComboBoxColumn;

                path = null;

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