public static DataGridTableStyle GenerateStyle(Type t, string[] displayPropertyNames)
        {
            DataGridTableStyle dgts = QMDataGrid.GenerateCommonDataGridTableStyle();

            if (displayPropertyNames != null)
            {
                PropertyInfo[] propertyInfos = t.GetProperties();
                foreach (string displayPropertyName in displayPropertyNames)
                {
                    foreach (PropertyInfo property in propertyInfos)
                    {
                        if (property.Name != displayPropertyName)
                        {
                            continue;
                        }
                        else
                        {
                            DataGridColumnStyle dgcs = null;
                            if (property.PropertyType == typeof(bool))
                            {
                                dgcs = new DataGridBoolColumn();
                            }
                            else
                            {
                                dgcs       = new DataGridTextBoxColumn();
                                dgcs.Width = 200;
                            }
                            dgcs.MappingName = property.Name;
                            dgcs.HeaderText  = DataGridDictionary.Instance.GetDataGridPropertyTitle(string.Format("{0}.{1}", t.FullName, property.Name));

                            dgts.GridColumnStyles.Add(dgcs);
                            break;
                        }
                    }
                }
            }

            return(dgts);
        }
        public static void SetStyle(DataGrid grid, object dataSource, string[] displayPropertyNames, Type objectType)
        {
            DataGridTableStyle dgts = QMDataGrid.GenerateCommonDataGridTableStyle();

            dgts.SelectionBackColor = System.Drawing.Color.Orange;
            dgts.SelectionForeColor = System.Drawing.Color.White;
            dgts.RowHeadersVisible  = false;
            grid.TableStyles.Clear();
            grid.TableStyles.Add(dgts);
            if (displayPropertyNames == null || dataSource == null)
            {
                return;
            }

            IList listSource = null;

            IList list = dataSource as IList;

            if (list != null)
            {
                listSource = list;
            }

            IListSource listS = dataSource as IListSource;

            if (listS != null)
            {
                listSource = listS.GetList();
            }

            if (listSource != null)
            {
                PropertyInfo[] propertyInfos = objectType.GetProperties();
                foreach (string displayPropertyName in displayPropertyNames)
                {
                    foreach (PropertyInfo property in propertyInfos)
                    {
                        if (property.Name != displayPropertyName)
                        {
                            continue;
                        }
                        else
                        {
                            DataGridColumnStyle dgcs = null;
                            string headText          = DataGridDictionary.Instance.GetDataGridPropertyTitle(string.Format("{0}.{1}", objectType.FullName, property.Name));
                            if (property.PropertyType == typeof(bool))
                            {
                                dgcs            = new DataGridBoolColumn();
                                dgcs.Width      = GetColumnWidth(grid, property, listSource, headText);
                                dgcs.HeaderText = headText;
                            }
                            else
                            {
                                dgcs            = new DataGridTextBoxColumn();
                                dgcs.Width      = GetColumnWidth(grid, property, listSource, headText);
                                dgcs.HeaderText = headText;
                            }
                            dgcs.MappingName = property.Name;

                            dgcs.Alignment = HorizontalAlignment.Center;

                            dgts.GridColumnStyles.Add(dgcs);
                            break;
                        }
                    }
                }
                dgts.MappingName = listSource.GetType().Name;
            }
        }