private IEnumerable<ItemMetadata> GetItemsMetadata(Type type) { var result = new List<ItemMetadata>(); var instanceMembers = type.GetMembers(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); foreach (MemberInfo member in instanceMembers) { var configItemAttribute = (ConfigurationItemAttribute)member.GetCustomAttributes(typeof(ConfigurationItemAttribute), true).SingleOrDefault(); if (configItemAttribute != null) { var validatorAttributes = (ValueValidatorAttribute[])member.GetCustomAttributes(typeof(ValueValidatorAttribute), true); if (member is FieldInfo) { var field = (FieldInfo)member; var itemMetadata = new ItemMetadata(this, field, configItemAttribute, validatorAttributes); result.Add(itemMetadata); } else if (member is PropertyInfo) { var property = (PropertyInfo)member; var itemMetadata = new ItemMetadata(this, property, configItemAttribute, validatorAttributes); result.Add(itemMetadata); } } } return result; }
private FrameworkElement CreateHeaderCell(ItemMetadata itemMetadata) { TextBlock uiText = new TextBlock(); uiText.Text = itemMetadata.UserName; uiText.ToolTip = itemMetadata.UserDescription; uiText.HorizontalAlignment = HorizontalAlignment.Right; uiText.FontWeight = FontWeights.Bold; Grid.SetColumn(uiText, 1); Grid result = new Grid() { Margin = new Thickness(10, 8, 5, 0), VerticalAlignment = VerticalAlignment.Top, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) }, new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) } }, Children = { uiText } }; if ((itemMetadata.UserDescription != null) && (itemMetadata.UserDescription.Trim().Length > 0)) { ToolTip helpToolTip = new ToolTip { Background = new LinearGradientBrush { GradientStops = { new GradientStop(Colors.Yellow, -2), new GradientStop(Colors.LightYellow, 1), } }, BorderBrush = Brushes.LightGray, BorderThickness = new Thickness(1), Content = new TextBlock { Text = itemMetadata.UserDescription, Margin = new Thickness(3), FontSize = 14, Foreground = Brushes.Black, FontWeight = FontWeights.SemiBold } }; Image uiHelp = new Image { ToolTip = helpToolTip, Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("pack://application:,,,/ObjectConfigurator;component/Resources/Help-icon.png")), Margin = new Thickness(0, 0, 5, 0), Height = 12 }; ToolTipService.SetInitialShowDelay(uiHelp, 0); ToolTipService.SetShowDuration(uiHelp, int.MaxValue); Grid.SetColumn(uiHelp, 0); result.Children.Add(uiHelp); } return result; }