/// <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);
        }
Exemple #2
0
        /// <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;
            }
        }
Exemple #3
0
 public static Assembly[] GetAssemblies()
 {
     return(PlatformServices.GetAssemblies());
 }