예제 #1
0
 public FmCheckBoxGridColumn()
 {
     EditSettings = new CheckEditSettings
     {
         FlowDirection = FlowDirection.RightToLeft,
     };
 }
예제 #2
0
        private static BaseEditSettings CreateEditorSettings(DataField field)
        {
            var flag     = field.FieldType.IsNullable();
            var trueType = field.FieldType.GetNonNullableType();

            BaseEditSettings settings;

            if (!string.IsNullOrEmpty(field.LookupCode))
            {
                settings = new CustomLookUpEditSettings {
                    LookUpCodeEditor = field.LookupCode, ImmediatePopup = true
                };
            }
            else if (trueType == typeof(DateTime))
            {
                settings = new DateEditSettings
                {
                    MaskUseAsDisplayFormat = true,
                    AllowNullInput         = flag,
                    Mask = field.DisplayFormat
                }
            }
            ;
            else if (trueType == typeof(Boolean))
            {
                settings = new CheckEditSettings {
                    IsThreeState = flag
                }
            }
            ;
            else
            {
                IValueConverter valueConverter;
                settings = DataField.TryGetFieldProperties(field, ValueDataFieldConstants.BindingIValueConverter, false, out valueConverter)
                    ? new CustomTextEditSettings()
                {
                    Converter = valueConverter, ValidateOnTextInput = false
                }
                    : new TextEditSettings();
            }

            settings.DisplayFormat        = field.DisplayFormat;
            settings.DisplayTextConverter = field.DisplayTextConverter;
            return(settings);
        }
        public SelectorColumn()
        {
            FieldName    = CheckedColumnFieldName;
            UnboundType  = UnboundColumnType.Boolean;
            EditSettings = new CheckEditSettings();
            Fixed        = FixedStyle.None;
            HorizontalHeaderContentAlignment = HorizontalAlignment.Center;

            #region Header Template

            DataTemplate            _template   = new DataTemplate();
            FrameworkElementFactory GridFactory = new FrameworkElementFactory(typeof(System.Windows.Controls.Grid));
            GridFactory.SetValue(System.Windows.Controls.Grid.HorizontalAlignmentProperty, HorizontalAlignment.Center);
            GridFactory.SetValue(System.Windows.Controls.Grid.VerticalAlignmentProperty, VerticalAlignment.Center);
            GridFactory.SetValue(System.Windows.Controls.Grid.VerticalAlignmentProperty, VerticalAlignment.Center);
            FrameworkElementFactory header = new FrameworkElementFactory(typeof(CheckEdit));
            header.SetValue(CheckEdit.VerticalAlignmentProperty, VerticalAlignment.Center);
            header.SetValue(CheckEdit.HorizontalAlignmentProperty, HorizontalAlignment.Center);
            header.AddHandler(CheckEdit.EditValueChangedEvent, new EditValueChangedEventHandler(chkHeader_EditValueChanged));

            Binding binding = new Binding
            {
                Path   = new PropertyPath("IsSelectAll"),
                Source = this,
                Mode   = BindingMode.TwoWay,
                NotifyOnSourceUpdated = true
            };

            Binding bindingHeaderVisibility = new Binding
            {
                Path   = new PropertyPath("HeaderVisibility"),
                Source = this,
                Mode   = BindingMode.TwoWay,
                NotifyOnSourceUpdated = true
            };

            header.SetBinding(CheckEdit.VisibilityProperty, bindingHeaderVisibility);
            header.SetBinding(CheckEdit.EditValueProperty, binding);
            GridFactory.AppendChild(header);
            _template.VisualTree = GridFactory;

            HeaderTemplate = _template;
            #endregion
            //< DataTemplate >
            //< CheckBox IsChecked = "{Binding RowData.Row.IsSelected}" IsEnabled = "{Binding RowData.Row.IsTest}" HorizontalAlignment = "Center" VerticalAlignment = "Center" />

            //</ DataTemplate >
            #region Cell Template
            DataTemplate            _cellTemplate   = new DataTemplate();
            FrameworkElementFactory cellGridFactory = new FrameworkElementFactory(typeof(System.Windows.Controls.Grid));
            cellGridFactory.SetValue(System.Windows.Controls.Grid.HorizontalAlignmentProperty, HorizontalAlignment.Stretch);
            cellGridFactory.SetValue(System.Windows.Controls.Grid.VerticalAlignmentProperty, VerticalAlignment.Stretch);

            FrameworkElementFactory cellFactory = new FrameworkElementFactory(typeof(CheckEdit));
            cellFactory.SetValue(CheckEdit.VerticalAlignmentProperty, VerticalAlignment.Center);
            cellFactory.SetValue(CheckEdit.HorizontalAlignmentProperty, HorizontalAlignment.Center);

            Binding cellBinding = new Binding
            {
                Path = new PropertyPath("RowData.Row.IsSelected")
                       //Mode = BindingMode.TwoWay
            };

            Binding cellReadBinding = new Binding
            {
                Path = new PropertyPath("RowData.Row.SelectReadOnly")
                       //Mode = BindingMode.TwoWay
            };

            Binding cellEnableBinding = new Binding
            {
                Path      = new PropertyPath("RowData.Row.SelectReadOnly"),
                Converter = new DevExpress.Xpf.Core.BoolInverseConverter()
                            //Mode = BindingMode.TwoWay
            };
            cellFactory.AddHandler(CheckEdit.EditValueChangedEvent, new EditValueChangedEventHandler(Cell_EditValueChanged));
            cellFactory.SetValue(CheckEdit.EditValueProperty, cellBinding);
            cellFactory.SetValue(CheckEdit.IsReadOnlyProperty, cellReadBinding);
            cellFactory.SetValue(CheckEdit.IsEnabledProperty, cellEnableBinding);


            cellGridFactory.AppendChild(cellFactory);
            _cellTemplate.VisualTree = cellGridFactory;

            CellTemplate = _cellTemplate;
            #endregion
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }

            var column = (GridColumnVm)value;

            object editor = null;

            switch (column.GridColumnType)
            {
            case GridColumnType.String:
                var editorTextEdit = new TextEditSettings();
                editorTextEdit.TextWrapping = System.Windows.TextWrapping.WrapWithOverflow;
                ReflectionUtils.SetProperty(editorTextEdit, "HorizontalContentAlignment", EditSettingsHorizontalAlignment.Center);
                editor = editorTextEdit;
                break;

            case GridColumnType.Int:
            case GridColumnType.Decimal:
                var columnSetting = column.ColumnSetting as SpinColumnSetting;
                var editor1       = new SpinEditSettings();
                ReflectionUtils.SetProperty(editor1, "HorizontalContentAlignment", EditSettingsHorizontalAlignment.Right);
                if (columnSetting != null)
                {
                    editor1.Mask = columnSetting.Mask;
                }
                NumericMaskOptions.SetAlwaysShowDecimalSeparator(editor1, false);
                editor1.MaskUseAsDisplayFormat = true;
                editor = editor1;
                break;

            case GridColumnType.Date:
                break;

            case GridColumnType.DateTime:
                var dateColumnSetting = column.ColumnSetting as DateColumnSetting;
                var dateEditor        = new DateEditSettings();
                if (dateColumnSetting == null)
                {
                    dateColumnSetting = new DateColumnSetting();
                    if (column.GridColumnType == GridColumnType.Date)
                    {
                        dateColumnSetting.Mask = "yyyy-MM-dd";
                    }
                    else
                    {
                        dateColumnSetting.Mask = "yyyy-MM-dd HH:mm:ss";
                    }
                }
                dateEditor.Mask = dateColumnSetting.Mask;
                dateEditor.MaskUseAsDisplayFormat = true;
                ReflectionUtils.SetProperty(dateEditor, "HorizontalContentAlignment", EditSettingsHorizontalAlignment.Left);
                editor = dateEditor;
                break;

            case GridColumnType.Enum:
            case GridColumnType.Combo:
                var comboColumnSetting = column.ColumnSetting as ComboBoxColumnSetting;
                if (comboColumnSetting == null)
                {
                    editor = new TextEditSettings();
                    break;
                }
                var enumEditor           = new ComboBoxEditSettings();
                var comboBoxEditSettings = new ComboBoxEditSettings();
                comboBoxEditSettings.ItemsSource = comboColumnSetting.ItemsSource;
                comboBoxEditSettings.HorizontalContentAlignment = EditSettingsHorizontalAlignment.Center;
                if (!string.IsNullOrWhiteSpace(comboBoxEditSettings.ValueMember))
                {
                    comboBoxEditSettings.ValueMember = comboColumnSetting.ValueMember;
                }
                if (!string.IsNullOrWhiteSpace(comboBoxEditSettings.DisplayMember))
                {
                    comboBoxEditSettings.DisplayMember = comboColumnSetting.DisplayMember;
                }
                editor = comboBoxEditSettings;
                break;

            case GridColumnType.Bool:
                editor = new CheckEditSettings {
                    IsThreeState = false, NullValue = false
                };
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(editor);
        }