public ElementRenderer GetRenderer(UIElement element) { var elementRenderer = element.ElementRenderer; if (elementRenderer == null) { // try to get the renderer from the user registered class factory var currentType = element.GetType(); while (elementRenderer == null && currentType != null) { if (typesToUserFactories.ContainsKey(currentType)) { elementRenderer = typesToUserFactories[currentType].TryCreateRenderer(element); } currentType = currentType.GetTypeInfo().BaseType; } // try to get the renderer from the default renderer factory. if (elementRenderer == null && defaultFactory != null) { elementRenderer = defaultFactory.TryCreateRenderer(element); } if (elementRenderer == null) { throw new InvalidOperationException(string.Format("No renderer found for element {0}", element)); } // cache the renderer for future uses. element.ElementRenderer = elementRenderer; } return(elementRenderer); }
public ElementRenderer GetRenderer(UIElement element) { ElementRenderer elementRenderer; elementIdToRenderer.TryGetValue(element.Id, out elementRenderer); if (elementRenderer == null) { // try to get the renderer from the user registered class factory var currentType = element.GetType(); while (elementRenderer == null && currentType != null) { if (typesToUserFactories.TryGetValue(currentType, out var rendererFactory)) { elementRenderer = rendererFactory.TryCreateRenderer(element); } currentType = currentType.GetTypeInfo().BaseType; } // try to get the renderer from the default renderer factory. if (elementRenderer == null && defaultFactory != null) { elementRenderer = defaultFactory.TryCreateRenderer(element); } if (elementRenderer == null) { throw new InvalidOperationException($"No renderer found for element {element}"); } // cache the renderer for future uses. elementIdToRenderer[element.Id] = elementRenderer; } return(elementRenderer); }