| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | using System;using System.Collections.Generic;#if WinRTusing Windows.UI.Xaml;#elseusing System.Windows;#endifnamespace Caliburn.Micro{    /// <summary>    /// Represents a resolver that takes a control and returns it's children    /// </summary>    public class ChildResolver {        private readonly Func<Type, bool> filter;        private readonly Func<DependencyObject, IEnumerable<DependencyObject>> resolver;        /// <summary>        /// Creates the ChildResolver using the given anonymous methods.        /// </summary>        /// <param name="filter">The filter</param>        /// <param name="resolver">The resolver</param>        public ChildResolver(Func<Type, bool> filter, Func<DependencyObject, IEnumerable<DependencyObject>> resolver) {            this.filter = filter;            this.resolver = resolver;        }        /// <summary>        /// Can this resolve appy to the given type.        /// </summary>        /// <param name="type">The visual tree type.</param>        /// <returns>Returns true if this resolver applies.</returns>        public bool CanResolve(Type type) {            return filter(type);        }        /// <summary>        /// The element from the visual tree for the children to resolve.        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public IEnumerable<DependencyObject> Resolve(DependencyObject obj) {            return resolver(obj);        }    }    /// <summary>    /// Generic strongly typed child resolver    /// </summary>    /// <typeparam name="T">The type to filter on</typeparam>    public class ChildResolver<T> : ChildResolver where T : DependencyObject {        /// <summary>        /// Creates a         /// </summary>        /// <param name="resolver"></param>        public ChildResolver(Func<T, IEnumerable<DependencyObject>> resolver) : base(            t => typeof(T).IsAssignableFrom(t),             o => resolver((T)o)){                    }    }}
 |