public FmCheckBoxGridColumn() { EditSettings = new CheckEditSettings { FlowDirection = FlowDirection.RightToLeft, }; }
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); }