public ControlDetailsViewModel(Control control) { if (control != null) { Properties = control.GetRegisteredProperties() .Select(x => new PropertyDetails(control, x)) .OrderBy(x => x.Name) .OrderBy(x => x.IsAttached); } }
private static void PrintVisualTree(IVisual visual, StringBuilder builder, int indent) { Control control = visual as Control; builder.Append(Indent(indent - 1)); if (indent > 0) { builder.Append(" +- "); } builder.Append(visual.GetType().Name); if (control != null) { builder.Append(" "); builder.AppendLine(control.Classes.ToString()); foreach (var property in control.GetRegisteredProperties()) { var value = control.GetDiagnostic(property); if (value.Priority != BindingPriority.Unset) { builder.Append(Indent(indent)); builder.Append(" | "); builder.Append(value.Property.Name); builder.Append(" = "); builder.Append(value.Value ?? "(null)"); builder.Append(" ["); builder.Append(value.Priority); builder.AppendLine("]"); } } } else { builder.AppendLine(); } foreach (var child in visual.VisualChildren) { PrintVisualTree(child, builder, indent + 1); } }