public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            DataGridLengthConverter converter = new DataGridLengthConverter();
            var res = converter.ConvertFrom(value);

            return(res);
        }
Example #2
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            DataGridLengthConverter dglc = new DataGridLengthConverter();
            double val = (double)value;

            return(dglc.ConvertFrom(val));
        }
Example #3
0
        protected override void ApplyAdditionalLayoutInfo(Dictionary <string, object> layoutInfo)
        {
            DataGridLength[] originalColumnWidths = this.DataGridFields.Columns.Select(column => column.Width).ToArray();

            try
            {
                var dataGridLengthConverter = new DataGridLengthConverter();
                for (int index = 0; index < this.DataGridFields.Columns.Count; index++)
                {
                    var dataGridColumnKey = string.Format(DataGridColumnKeyFormat, index);
                    if (!layoutInfo.ContainsKey(dataGridColumnKey))
                    {
                        continue;
                    }

                    this.DataGridFields.Columns[index].Width = (DataGridLength)dataGridLengthConverter.ConvertFromString((string)layoutInfo[dataGridColumnKey]);
                }
            }
            catch
            {
                for (int index = 0; index < this.DataGridFields.Columns.Count; index++)
                {
                    this.DataGridFields.Columns[index].Width = originalColumnWidths[index];
                }
            }
        }
Example #4
0
        private DataGridLength ParseWidth(string defaultWidth)
        {
            if (string.IsNullOrEmpty(defaultWidth))
            {
                return(new DataGridLength(100));
            }

            var converter = new DataGridLengthConverter();

            return((DataGridLength)converter.ConvertFromString(defaultWidth));
        }
        private static void AddColumns(DataGrid dataGrid, IEnumerable columns)
        {
            foreach (var column in columns)
            {
                var desc                    = column as IColumnDescriptionVm;
                var template                = desc?.Template;
                var cellTemplate            = dataGrid.FindResource(new DataTemplateKey(template.GetType())) as DataTemplate;
                var dataGridLengthConverter = new DataGridLengthConverter();
                var customBoundColumn       = new CustomBoundColumn(desc)
                {
                    Header              = column,
                    CellTemplate        = cellTemplate,
                    CellEditingTemplate = GetAttachedCellEditingTemplate(dataGrid),
                    // MappedValueCollection = GetMappedValues(dataGrid),
                };
                if (desc.Width != null)
                {
                    customBoundColumn.Width = (DataGridLength)dataGridLengthConverter.ConvertFrom(null, CultureInfo.InvariantCulture, desc.Width);
                }
                else
                {
                    customBoundColumn.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
                }
                if (desc.CanSort)
                {
                    customBoundColumn.HeaderTemplate = GetSortingHeaderTemplate(dataGrid);
                }
                else
                {
                    customBoundColumn.HeaderTemplate = GetHeaderTemplate(dataGrid);
                }
                if (desc.HasOverlook)
                {
                    customBoundColumn.CellStyle = dataGrid.FindResource("OverlookCellStyle") as Style;
                }

                if (desc.InsertBefore)
                {
                    dataGrid.Columns.Insert(dataGrid.FrozenColumnCount, customBoundColumn);
                }
                else
                {
                    dataGrid.Columns.Add(customBoundColumn);
                }
            }
        }
        /// <summary>
        /// DataGrid绑定数据源描述
        /// </summary>
        /// <param name="headerName">列名</param>
        /// <param name="showAs">显示为</param>
        /// <param name="width">宽度</param>
        /// <param name="displayIndex">显示顺序</param>
        /// <param name="resourceKey">自定义列Key</param>
        public BindDescriptionAttribute(string headerName, ShowScheme showAs = ShowScheme.普通文本, string width = "Auto", int displayIndex = 0, string resourceKey = "")
        {
            HeaderName   = headerName;
            DisplayIndex = displayIndex;
            ResourceKey  = resourceKey;
            ShowAs       = showAs;
            var convert = new DataGridLengthConverter();

            Width = (DataGridLength)convert.ConvertFrom(width);
            var gridCOnvert = new GridLengthConverter();

            CloumnWidth = (GridLength)gridCOnvert.ConvertFrom(width);

            if (showAs == ShowScheme.自定义 && string.IsNullOrWhiteSpace(resourceKey))
            {
                throw new ArgumentException($"自定义列时需要指定{nameof(resourceKey)}参数!");
            }
        }
Example #7
0
        protected override Dictionary <string, object> FetchAdditionalLayoutInfo()
        {
            var   additionalLayoutInfo       = new Dictionary <string, object>();
            var   dataGridLengthConverter    = new DataGridLengthConverter();
            Regex widthSpecialCharacterMatch = new Regex(@"[^0-9.]");

            for (int index = 0; index < this.DataGridFields.Columns.Count; index++)
            {
                DataGridColumn dataGridColumn         = this.DataGridFields.Columns[index];
                string         dataGridColumnWidthStr = dataGridLengthConverter.ConvertToString(dataGridColumn.Width);

                if (widthSpecialCharacterMatch.IsMatch(dataGridColumnWidthStr))
                {
                    additionalLayoutInfo.Add(string.Format(DataGridColumnKeyFormat, index), dataGridLengthConverter.ConvertToString(dataGridColumn.Width));
                }
                else
                {
                    additionalLayoutInfo.Add(string.Format(DataGridColumnKeyFormat, index), Convert.ToString(dataGridColumn.ActualWidth));
                }
            }

            return(additionalLayoutInfo);
        }