private static void PropertyItemLoaded(object?sender, EventArgs e, PropertyResolverEx resolverEx, bool hasDescription) { var propertyItem = (PropertyItem)sender !; // Make the child textbox not use built-in tooltip var textbox = FindChild <TextBox>(propertyItem, ""); if (textbox != null) { textbox.ToolTip = null; textbox.Focusable = false; } // Make the parent expander non-focusable for controllers. var expander = WpfUtilities.FindParent <Expander>(propertyItem); if (expander != null) { expander.Focusable = false; } if (!hasDescription) { return; } var tooltip = new ToolTip(); tooltip.DataContext = propertyItem; tooltip.Content = propertyItem.Description; tooltip.PlacementTarget = propertyItem; tooltip.SetResourceReference(FrameworkElement.StyleProperty, "PropertyGridTooltip"); ToolTipService.SetInitialShowDelay(tooltip, 0); ToolTipService.SetBetweenShowDelay(tooltip, 0); propertyItem.ToolTip = tooltip; propertyItem.MouseEnter += (o, args) => { PropertyItemOnMouseEnter(o, args, resolverEx); }; propertyItem.MouseLeave += PropertyItemOnMouseLeave; // Set grid colour to transparent so it's hit testable and can pick up mouse events var groupbox = FindChild <Grid>(propertyItem, ""); if (groupbox != null) { groupbox.Background = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0)); } }