private void UpdateColumnGripperToolTipVisibility()
        {
            var dataGrid = AssociatedObject;

            if (dataGrid == null)
            {
                return;
            }

            DataGridColumn leftColumn            = null;
            var            isLeftColumnStarSized = false;

            foreach (var column in dataGrid.Columns.OrderBy(c => c.DisplayIndex))
            {
                var leftColumnRightGripperToolTip = (ToolTip)leftColumn?.GetValue(RightGripperToolTipProperty);
                var thisColumnLeftGripperToolTip  = (ToolTip)column?.GetValue(LeftGripperToolTipProperty);

                var visibility = isLeftColumnStarSized ? Visibility.Visible : Visibility.Collapsed;

                leftColumnRightGripperToolTip?.Do(t => t.Visibility = visibility);
                thisColumnLeftGripperToolTip?.Do(t => t.Visibility  = visibility);

                leftColumn            = column;
                isLeftColumnStarSized = GetStarSize(column) > double.Epsilon;
            }

            (leftColumn?.GetValue(RightGripperToolTipProperty) as ToolTip)?.Do(t => t.Visibility = Visibility.Collapsed);
        }
Exemplo n.º 2
0
        private void RatingCell_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            DataGridRow       row               = VisualTreeExtensions.FindParent <DataGridRow>((DependencyObject)e.OriginalSource);
            DataGridCell      cell              = VisualTreeExtensions.FindParent <DataGridCell>((DependencyObject)e.OriginalSource);
            DataGridColumn    column            = cell.Column;
            RatingUserControl ratingUserControl = sender as RatingUserControl;
            MyMusicListItem   musicItem         = row.DataContext as MyMusicListItem;

            dataGrid.CommitEdit(DataGridEditingUnit.Row, true);

            if (this.dataGrid.SelectedItems.Count > 1)
            {
                WpfMessageBoxResult result = WPFMessageBox.Show(Window.GetWindow(this),
                                                                StringTable.MultiTagEdit, StringTable.MultiTagEditWarning,
                                                                "/Big3.Hitbase.SharedResources;component/Images/RenameLarge.png",
                                                                WpfMessageBoxButtons.YesNo, "MultiTagEdit", false);

                if (result == WpfMessageBoxResult.Yes)
                {
                    Field field       = (Field)column.GetValue(DataGridExtensions.FieldProperty);
                    int   columnIndex = column.DisplayIndex - 1;
                    musicItem.Items[columnIndex] = ratingUserControl.Rating;
                    PerformMultiEdit(musicItem, field, columnIndex);
                }
            }
            else
            {
                Field field = (Field)column.GetValue(DataGridExtensions.FieldProperty);
                musicItem.Items[column.DisplayIndex - 1] = ratingUserControl.Rating;
                EditTrackField(column.DisplayIndex - 1, field, musicItem);
            }
        }
Exemplo n.º 3
0
        void ColumnOptionControl_Loaded(object sender, RoutedEventArgs e)
        {
            //Check the Grid for Building commmands and Visibility
            DataGridColumn       column    = null;
            DataGridColumnHeader colHeader = null;

            UIElement parent = (UIElement)VisualTreeHelper.GetParent(this);

            while (parent != null)
            {
                parent = (UIElement)VisualTreeHelper.GetParent(parent);
                if (colHeader == null)
                {
                    colHeader = parent as DataGridColumnHeader;
                }

                if (Grid == null)
                {
                    Grid = parent as ExDataGrid;
                }
            }

            if (colHeader != null)
            {
                column = colHeader.Column;
            }

            FilterColumnInfo = new OptionColumnInfo(column, Grid.FilterType);

            // Right adjust numeric column
            if (column is DataGridBoundColumn boundColumn)
            {
                if (TypeHelper.IsNumbericType(FilterColumnInfo.PropertyType))
                {
                    boundColumn.ElementStyle = _rightCellStyle;
                }
            }

            CanUserFreeze = Grid.CanUserFreeze;
            CanUserGroup  = Grid.CanUserGroup;
            if (column != null)
            {
                object oCanUserFreeze = column.GetValue(ColumnConfiguration.CanUserFreezeProperty);
                if (oCanUserFreeze != null && (bool)oCanUserFreeze)
                {
                    CanUserFreeze = (bool)oCanUserFreeze;
                }

                object oCanUserGroup = column.GetValue(ColumnConfiguration.CanUserGroupProperty);
                if (oCanUserGroup != null && (bool)oCanUserGroup)
                {
                    CanUserGroup = (bool)oCanUserGroup;
                }
            }

            Grid.RegisterColumnOptionControl(this);
            ResetVisibility();
        }
        void ColumnOptionControl_Loaded(object sender, RoutedEventArgs e)
        {
            //Check the Grid for Building commmands and Visibility
            DataGridColumn       column    = null;
            DataGridColumnHeader colHeader = null;

            UIElement parent = (UIElement)VisualTreeHelper.GetParent(this);

            while (parent != null)
            {
                parent = (UIElement)VisualTreeHelper.GetParent(parent);
                if (colHeader == null)
                {
                    colHeader = parent as DataGridColumnHeader;
                }

                if (Grid == null)
                {
                    Grid = parent as IntelliGrid;
                }
            }

            if (colHeader != null)
            {
                column = colHeader.Column;
            }

            FilterColumnInfo = new OptionColumnInfo(column, Grid.FilterType);

            CanUserFreeze = Grid.CanUserFreeze;
            CanUserGroup  = Grid.CanUserGroup;
            if (column != null)
            {
                object oCanUserFreeze = column.GetValue(ColumnConfiguration.CanUserFreezeProperty);
                if (oCanUserFreeze != null && (bool)oCanUserFreeze)
                {
                    CanUserFreeze = (bool)oCanUserFreeze;
                }

                object oCanUserGroup = column.GetValue(ColumnConfiguration.CanUserGroupProperty);
                if (oCanUserGroup != null && (bool)oCanUserGroup)
                {
                    CanUserGroup = (bool)oCanUserGroup;
                }
            }

            Grid.RegisterColumnOptionControl(this);
            ResetVisibility();
        }
Exemplo n.º 5
0
        public void columnHeaderDownClick(object sender, RoutedEventArgs e)
        {
            DependencyObject dep = (DependencyObject)e.Source;
            var columnHeader     = dep as DataGridColumnHeader;

            if (columnHeader != null)
            {
                //当前的列名
                //string columnName = columnHeader.Column.Header.ToString();
                DataGridColumn column     = columnHeader.Column;
                string         columnName = column.GetValue(ControlAttachProperty.TagProperty).ToString();

                this.SelectionUnit = DataGridSelectionUnit.Cell;
                this.SelectedCells.Clear();
                (SelectColumsItems as IList).Clear();
                foreach (dynamic item in this.Items)
                {
                    //设置选中
                    this.SelectedCells.Add(new DataGridCellInfo(item, columnHeader.Column));
                    //设置数据
                    if ((SelectColumsItems as IList).Contains(item.GetMemberValue(columnName)))
                    {
                        (SelectColumsItems as IList).Remove(item.GetMemberValue(columnName));
                    }
                    else
                    {
                        (SelectColumsItems as IList).Add(item.GetMemberValue(columnName));
                    }
                }
                //强制通知待优化
                SelectColumsItems = SelectColumsItems;
            }
        }
Exemplo n.º 6
0
        private static object?GetCellItem(this DataGridColumn column, object?item)
        {
            if (column is null || item is null)
            {
                return(null);
            }

            var descriptor = (PropertyDescriptor)column.GetValue(PropertyDescriptorProperty);

            if (descriptor != null)
            {
                return(descriptor.GetValue(item));
            }

            var binding = column switch
            {
                DataGridBoundColumn c => c.Binding as Binding,
                CellTemplateColumn c => c.Binding as Binding,
                _ => null,
            };

            if (binding is null)
            {
                return(null);
            }

            descriptor = TypeDescriptor.GetProperties(item)
                         .OfType <PropertyDescriptor>()
                         .SingleOrDefault(x => x.Name == binding.Path.Path);
            column.SetCurrentValue(PropertyDescriptorProperty, descriptor);

            return(descriptor?.GetValue(item));
        }
Exemplo n.º 7
0
        private static object GetCellItem(this DataGridColumn column, object item)
        {
            if (column == null || item == null)
            {
                return(null);
            }

            var descriptor = (PropertyDescriptor)column.GetValue(PropertyDescriptorProperty);

            if (descriptor != null)
            {
                return(descriptor.GetValue(item));
            }

            var binding = (column as DataGridBoundColumn)?.Binding as Binding;

            if (binding == null)
            {
                return(null);
            }

            descriptor = TypeDescriptor.GetProperties(item)
                         .OfType <PropertyDescriptor>()
                         .SingleOrDefault(x => x.Name == binding.Path.Path);
            column.SetValue(PropertyDescriptorProperty, descriptor);

            return(descriptor?.GetValue(item));
        }
Exemplo n.º 8
0
        private void PerformCustomSort(DataGridColumn column)
        {
            Field         field         = (Field)column.GetValue(DataGridExtensions.FieldProperty);
            SortDirection sortDirection = column.SortDirection == ListSortDirection.Ascending ? SortDirection.Ascending : SortDirection.Descending;

            if ((Keyboard.Modifiers & ModifierKeys.Shift) == 0)
            {
                CdListSort.Clear();
            }

            SortField sortFieldFound = CdListSort.FirstOrDefault(x => x.Field == field);

            if (sortFieldFound != null)
            {
                sortFieldFound.SortDirection = sortDirection;
            }
            else
            {
                CdListSort.Add(new SortField(field, sortDirection));
            }
            ListSortDirection direction = (column.SortDirection != ListSortDirection.Ascending) ? ListSortDirection.Ascending : ListSortDirection.Descending;

            column.SortDirection = direction;
            ListCollectionView lcv    = (ListCollectionView)CollectionViewSource.GetDefaultView(dataGrid.ItemsSource);
            MySort             mySort = new MySort(DataBase, dataGrid, this.cdListFields, CdListSort);

            lcv.CustomSort = mySort;    // provide our own sort
        }
Exemplo n.º 9
0
 /// <summary>Control the visibility of the filter for this column.</summary>
 public static bool GetIsFilterVisible(this DataGridColumn column)
 {
     if (column == null)
     {
         throw new ArgumentNullException("column");
     }
     return(column.GetValue <bool>(DataGridFilterColumn.IsFilterVisibleProperty));
 }
Exemplo n.º 10
0
        /// <summary>
        /// Gets the column tag from a <see cref="DataGridColumn"/>.
        /// </summary>
        /// <param name="column">The column to get the tag from.</param>
        /// <returns>The column tag.</returns>
        public static Column GetTag(this DataGridColumn column)
        {
            if (column == null)
            {
                throw new ArgumentNullException(nameof(column));
            }

            return((Column)column.GetValue(ColumnProperty));
        }
        /// <summary>
        /// Control the visibility of the filter for this column.
        /// </summary>
        /// <param name="column">The column.</param>
        /// <returns>True if the filter is visible for this column</returns>
        /// <exception cref="ArgumentNullException">column</exception>
        public static bool GetIsFilterVisible(this DataGridColumn column)
        {
            if (column == null)
            {
                throw new ArgumentNullException(nameof(column));
            }

            return((bool)column.GetValue(IsFilterVisibleProperty));
        }
            public ColumInfo([NotNull] DataGridColumn column, [CanBeNull] Configuration configuration)
            {
                Contract.Requires(column != null);

                _column = column;

                ProjectPropertyName = column.GetValue(ProjectPropertyNameProperty) as ProjectPropertyName;
                DisplayIndex        = GetDisplayIndex(ProjectPropertyName, configuration);
            }
        /// <summary>
        /// Examines the property path and returns the objects value for this column.
        /// Filtering is applied on the SortMemberPath, this is the path used to create the binding.
        /// </summary>
        internal static object?GetCellContentData(this DataGridColumn column, object?item)
        {
            var propertyPath = column.SortMemberPath;

            if (item == null || string.IsNullOrEmpty(propertyPath))
            {
                return(null);
            }

            if (!(bool)column.GetValue(GetCellContentMustUseBindingProperty))
            {
                try
                {
                    var type     = item.GetType();
                    var property = type.GetProperty(propertyPath);
                    if (property != null)
                    {
                        return(property.GetValue(item));
                    }
                }
                catch
                {
                    // not a plain property, fall-back to binding...
                }
            }

            column.SetValue(GetCellContentMustUseBindingProperty, true);

            // Since already the name "SortMemberPath" implies that this might be not only a simple property name but a full property path
            // we now use binding for evaluation; this will properly handle even complex property paths like e.g. "SubItems[0].Name"
            BindingOperations.SetBinding(column, CellValueProperty, new Binding(propertyPath)
            {
                Source = item
            });
            var propertyValue = column.GetValue(CellValueProperty);

            BindingOperations.ClearBinding(column, CellValueProperty);

            return(propertyValue);
        }
 public static ICustomSorter GetCustomSorter(DataGridColumn gridColumn)
 {
     if (gridColumn.Header.ToString() != "Solution time" &&
         gridColumn.Header.ToString() != "Время сборки" &&
         gridColumn.Header.ToString() != "Час зборки")
     {
         return((ICustomSorter)gridColumn.GetValue(CustomSorterProperty));
     }
     else
     {
         return(new SolutionTimeComparer());
     }
 }
Exemplo n.º 15
0
        private static string GetKey(DataGridColumn column)
        {
            var key         = column.GetValue(FrameworkElement.NameProperty) as string;
            var boundColumn = column as DataGridBoundColumn;

            if (boundColumn != null)
            {
                var binding = boundColumn.Binding as Binding;
                if (binding != null)
                {
                    key = binding.Path.Path;
                }
            }
            return(key);
        }
        /// <summary>
        /// Examines the property path and returns the objects value for this column.
        /// Filtering is applied on the SortMemberPath, this is the path used to create the binding.
        /// </summary>
        internal static object?GetCellContentData(this DataGridColumn column, object?item)
        {
            var propertyPath = column.SortMemberPath;

            if (String.IsNullOrEmpty(propertyPath))
            {
                return(null);
            }

            // Since already the name "SortMemberPath" implies that this might be not only a simple property name but a full property path
            // we use binding for evaluation; this will properly handle even complex property paths like e.g. "SubItems[0].Name"
            BindingOperations.SetBinding(column, _cellValueProperty, new Binding(propertyPath)
            {
                Source = item
            });
            var propertyValue = column.GetValue(_cellValueProperty);

            BindingOperations.ClearBinding(column, _cellValueProperty);

            return(propertyValue);
        }
Exemplo n.º 17
0
 private static DataGridColumnSettings GetDataGridColumnSettings(DataGridColumn column)
 {
     return(column.GetValue(DataGridColumnSettingsProperty) as DataGridColumnSettings);
 }
Exemplo n.º 18
0
 public static string GetFormatForExport(DataGridColumn element)
 {
     return((string)element.GetValue(FormatForExportProperty));
 }
Exemplo n.º 19
0
 public static Boolean GetIsExported(DataGridColumn element)
 {
     return((Boolean)element.GetValue(IsExportedProperty));
 }
 /// <summary>
 /// Gets the filter host for the data grid of this column.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <returns>The <see cref="DataGridFilterHost"/></returns>
 public static DataGridFilterHost?GetFilterHost(this DataGridColumn column)
 {
     return((DataGridFilterHost?)column.GetValue(FilterHostProperty));
 }
 /// <summary>
 /// Gets the control template for the filter of this column. If the template is null or unset, a default template will be used.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <returns>The control template.</returns>
 public static ControlTemplate?GetTemplate(this DataGridColumn column)
 {
     return((ControlTemplate)column.GetValue(TemplateProperty));
 }
 /// <summary>
 /// Gets the filter expression of the column.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <returns>The filter.</returns>
 public static IContentFilter?GetActiveFilter(this DataGridColumn column)
 {
     return((IContentFilter)column.GetValue(ActiveFilterProperty));
 }
Exemplo n.º 23
0
        void ColumnFilterControl_Loaded(object sender, RoutedEventArgs e)
        {
            DataGridColumn       column    = null;
            DataGridColumnHeader colHeader = null;

            UIElement parent = (UIElement)VisualTreeHelper.GetParent(this);

            while (parent != null)
            {
                parent = (UIElement)VisualTreeHelper.GetParent(parent);
                if (colHeader == null)
                {
                    colHeader = parent as DataGridColumnHeader;
                }

                if (Grid == null)
                {
                    Grid = parent as ExDataGrid;
                }
            }

            if (colHeader != null)
            {
                column = colHeader.Column;
            }

            CanUserFilter         = Grid.CanUserFilter;
            CanUserFreeze         = Grid.CanUserFreeze;
            CanUserGroup          = Grid.CanUserGroup;
            CanUserSelectDistinct = Grid.CanUserSelectDistinct;


            if (column != null)
            {
                object oCanUserFilter = column.GetValue(ColumnConfiguration.CanUserFilterProperty);
                if (oCanUserFilter != null)
                {
                    CanUserFilter = (bool)oCanUserFilter;
                }

                object oCanUserFreeze = column.GetValue(ColumnConfiguration.CanUserFreezeProperty);
                if (oCanUserFreeze != null)
                {
                    CanUserFreeze = (bool)oCanUserFreeze;
                }

                object oCanUserGroup = column.GetValue(ColumnConfiguration.CanUserGroupProperty);
                if (oCanUserGroup != null)
                {
                    CanUserGroup = (bool)oCanUserGroup;
                }

                object oCanUserSelectDistinct = column.GetValue(ColumnConfiguration.CanUserSelectDistinctProperty);
                if (oCanUserSelectDistinct != null)
                {
                    CanUserSelectDistinct = (bool)oCanUserSelectDistinct;
                }
            }


            if (Grid.FilterType == null)
            {
                return;
            }

            FilterColumnInfo = new OptionColumnInfo(column, Grid.FilterType);

            Grid.RegisterOptionControl(this);

            FilterOperations.Clear();
            if (FilterColumnInfo.PropertyType != null)
            {
                FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.Equals, "Equals", "/Capnode.Wpf;component/Images/Equal.png"));
                if (TypeHelper.IsStringType(FilterColumnInfo.PropertyType))
                {
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.Contains, "Contains", "/Capnode.Wpf;component/Images/Contains.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.StartsWith, "Starts With", "/Capnode.Wpf;component/Images/StartsWith.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.EndsWith, "Ends With", "/Capnode.Wpf;component/Images/EndsWith.png"));
                }

                if (TypeHelper.IsNumbericType(FilterColumnInfo.PropertyType))
                {
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.NotEquals, "Not Equal", "/Capnode.Wpf;component/Images/NotEqual.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.GreaterThan, "Greater Than", "/Capnode.Wpf;component/Images/GreaterThan.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.GreaterThanEqual, "Greater Than or Equal", "/Capnode.Wpf;component/Images/GreaterThanEqual.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.LessThan, "Less Than", "/Capnode.Wpf;component/Images/LessThan.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.LessThanEqual, "Less Than or Equal", "/Capnode.Wpf;component/Images/LessThanEqual.png"));
                }

                SelectedFilterOperation = FilterOperations[0];
            }

            if (FilterColumnInfo != null && FilterColumnInfo.IsValid)
            {
                foreach (var i in DistinctPropertyValues.Where(i => i.IsChecked))
                {
                    i.IsChecked = false;
                }

                DistinctPropertyValues.Clear();
                FilterText = string.Empty;
                _boundColumnPropertyAccessor = null;

                if (TypeHelper.IsNumbericType(FilterColumnInfo.PropertyType))
                {
                    CanUserSelectDistinct = false;
                    Visibility            = Visibility.Visible;
                }
                else if (!string.IsNullOrWhiteSpace(FilterColumnInfo.PropertyPath))
                {
                    Visibility = Visibility.Visible;
                    ParameterExpression arg        = linq.Expression.Parameter(typeof(object), "x");
                    linq.Expression     expr       = PropertyExpression(Grid.FilterType, FilterColumnInfo.PropertyPath, arg);
                    linq.Expression     conversion = linq.Expression.Convert(expr, typeof(object));
                    _boundColumnPropertyAccessor = linq.Expression.Lambda <Func <object, object> >(conversion, arg).Compile();
                }
                else
                {
                    Visibility = Visibility.Collapsed;
                }

                object oDefaultFilter = column.GetValue(ColumnConfiguration.DefaultFilterProperty);
                if (oDefaultFilter != null)
                {
                    FilterText = (string)oDefaultFilter;
                }
            }

            CalcControlVisibility();
        }
Exemplo n.º 24
0
 public static IComparer GetSorter(DataGridColumn column)
 {
     return((IComparer)column.GetValue(SorterProperty));
 }
 public static IDataGridColumnComparer GetCustomComparer(DataGridColumn gridColumn)
 {
     return((IDataGridColumnComparer)gridColumn.GetValue(CustomComparerProperty));
 }
Exemplo n.º 26
0
        void ColumnFilterControl_Loaded(object sender, RoutedEventArgs e)
        {
            DataGridColumn       column    = null;
            DataGridColumnHeader colHeader = null;

            UIElement parent = (UIElement)VisualTreeHelper.GetParent(this);

            while (parent != null)
            {
                parent = (UIElement)VisualTreeHelper.GetParent(parent);
                if (colHeader == null)
                {
                    colHeader = parent as DataGridColumnHeader;
                }

                if (Grid == null)
                {
                    Grid = parent as JibGrid;
                }
            }

            if (colHeader != null)
            {
                column = colHeader.Column;
            }

            CanUserFilter         = Grid.CanUserFilter;
            CanUserFreeze         = Grid.CanUserFreeze;
            CanUserGroup          = Grid.CanUserGroup;
            CanUserSelectDistinct = Grid.CanUserSelectDistinct;


            if (column != null)
            {
                object oCanUserFilter = column.GetValue(ColumnConfiguration.CanUserFilterProperty);
                if (oCanUserFilter != null)
                {
                    CanUserFilter = (bool)oCanUserFilter;
                }

                object oCanUserFreeze = column.GetValue(ColumnConfiguration.CanUserFreezeProperty);
                if (oCanUserFreeze != null)
                {
                    CanUserFreeze = (bool)oCanUserFreeze;
                }

                object oCanUserGroup = column.GetValue(ColumnConfiguration.CanUserGroupProperty);
                if (oCanUserGroup != null)
                {
                    CanUserGroup = (bool)oCanUserGroup;
                }

                object oCanUserSelectDistinct = column.GetValue(ColumnConfiguration.CanUserSelectDistinctProperty);
                if (oCanUserSelectDistinct != null)
                {
                    CanUserSelectDistinct = (bool)oCanUserSelectDistinct;
                }
            }


            if (Grid.FilterType == null)
            {
                return;
            }

            FilterColumnInfo = new OptionColumnInfo(column, Grid.FilterType);

            Grid.RegisterOptionControl(this);

            FilterOperations.Clear();
            if (FilterColumnInfo.PropertyType != null)
            {
                if (TypeHelper.IsStringType(FilterColumnInfo.PropertyType))
                {
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.Contains, "Contains", "/Jib.WPF.Controls;component/Images/Contains.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.StartsWith, "Starts With", "/Jib.WPF.Controls;component/Images/StartsWith.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.EndsWith, "Ends With", "/Jib.WPF.Controls;component/Images/EndsWith.png"));
                }
                FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.Equals, "Equals", "/Jib.WPF.Controls;component/Images/Equal.png"));
                if (TypeHelper.IsNumbericType(FilterColumnInfo.PropertyType))
                {
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.GreaterThan, "Greater Than", "/Jib.WPF.Controls;component/Images/GreaterThan.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.GreaterThanEqual, "Greater Than or Equal", "/Jib.WPF.Controls;component/Images/GreaterThanEqual.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.LessThan, "Less Than", "/Jib.WPF.Controls;component/Images/LessThan.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.LessThanEqual, "Greater Than or Equal", "/Jib.WPF.Controls;component/Images/GreaterThanEqual.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.NotEquals, "Not Equal", "/Jib.WPF.Controls;component/Images/NotEqual.png"));
                }
                SelectedFilterOperation = FilterOperations[0];
            }

            if (FilterColumnInfo != null && FilterColumnInfo.IsValid)
            {
                foreach (var i in DistinctPropertyValues.Where(i => i.IsChecked))
                {
                    i.IsChecked = false;
                }
                DistinctPropertyValues.Clear();
                FilterText = string.Empty;
                _boundColumnPropertyAccessor = null;

                if (!string.IsNullOrWhiteSpace(FilterColumnInfo.PropertyPath))
                {
                    if (FilterColumnInfo.PropertyPath.Contains('.'))
                    {
                        throw new ArgumentException(string.Format("This version of the grid does not support a nested property path such as '{0}'.  Please make a first-level property for filtering and bind to that.", FilterColumnInfo.PropertyPath));
                    }

                    this.Visibility = System.Windows.Visibility.Visible;
                    ParameterExpression arg = System.Linq.Expressions.Expression.Parameter(typeof(object), "x");
                    System.Linq.Expressions.Expression expr = System.Linq.Expressions.Expression.Convert(arg, Grid.FilterType);
                    expr = System.Linq.Expressions.Expression.Property(expr, Grid.FilterType, FilterColumnInfo.PropertyPath);
                    System.Linq.Expressions.Expression conversion = System.Linq.Expressions.Expression.Convert(expr, typeof(object));
                    _boundColumnPropertyAccessor = System.Linq.Expressions.Expression.Lambda <Func <object, object> >(conversion, arg).Compile();
                }
                else
                {
                    this.Visibility = System.Windows.Visibility.Collapsed;
                }
                object oDefaultFilter = column.GetValue(ColumnConfiguration.DefaultFilterProperty);
                if (oDefaultFilter != null)
                {
                    FilterText = (string)oDefaultFilter;
                }
            }

            CalcControlVisibility();
        }
Exemplo n.º 27
0
        private static string GetValuePropertyBindingPath(DataGridColumn column)
        {
            string path = (string)column.GetValue(DataGridColumnExtensions.CustomBindingPathProperty);

            if (!string.IsNullOrEmpty(path))
            {
                return(path);
            }

            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 (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);
        }
 /// <summary>
 /// Gets the filter host for the data grid of this column.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <returns>The <see cref="DataGridFilterColumnControl"/></returns>
 public static DataGridFilterColumnControl?GetDataGridFilterColumnControl(this DataGridColumn column)
 {
     return((DataGridFilterColumnControl?)column.GetValue(DataGridFilterColumnControlProperty));
 }
Exemplo n.º 29
0
 public static ICustomSorter GetCustomSorter(DataGridColumn gridColumn)
 {
     return((ICustomSorter)gridColumn.GetValue(CustomSorterProperty));
 }
 /// <summary>
 /// Gets the filter expression of the column.
 /// </summary>
 /// <param name="column">The column.</param>
 /// <returns>The filter expression.</returns>
 public static object?GetFilter(this DataGridColumn column)
 {
     return(column.GetValue(FilterProperty));
 }