/// <summary> /// Applies the Binding represented by the SetterValueBindingHelper. /// </summary> /// <param name="element">Element to apply the Binding to.</param> /// <param name="item">SetterValueBindingHelper representing the Binding.</param> private static void ApplyBinding(FrameworkElement element, SetterValueBinding item) { // Get the type on which to set the Binding Type type = null; if (null == item.Type) { // No type specified; setting for the specified element type = element.GetType(); } else { // Try to get the type from the type system type = Type.GetType(item.Type); if (null == type) { // Search for the type in the list of assemblies foreach (var assembly in PlatformServices.GetAssemblies().ToList()) { // Match on short or full name var typeInfo = assembly.DefinedTypes.FirstOrDefault(t => (t.FullName == item.Type) || (t.Name == item.Type)); if (null != typeInfo) { // Found; done searching type = typeInfo.AsType(); break; } } if (null == type) { // Unable to find the requested type anywhere throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "Unable to access type \"{0}\". Try using an assembly qualified type name.", item.Type)); } } } // Get the DependencyProperty for which to set the Binding DependencyProperty property = null; var field = type.GetTypeInfo().DeclaredProperties.FirstOrDefault(fi => fi.Name == item.Property + "Property"); if (null != field) { property = field.GetValue(null) as DependencyProperty; } if (null == property) { // Unable to find the requested property throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "Unable to access DependencyProperty \"{0}\" on type \"{1}\".", item.Property, type.Name)); } // Set the specified Binding on the specified property element.SetBinding(property, item.Binding); }
/// <summary> /// Initialize registered views. /// </summary> private void Initialize() { if (!this._haveLoadedVisuals) { var assemblies = PlatformServices.GetAssemblies(); foreach (var asm in assemblies) { foreach (ExportUIVisualizerAttribute attr in asm.GetCustomAttributes(typeof(ExportUIVisualizerAttribute), true)) { this.Add(attr.Key, attr.Type); } } this._haveLoadedVisuals = true; } }
public static Assembly[] GetAssemblies() { return(PlatformServices.GetAssemblies()); }