/// <summary>
        ///     The select template.
        /// </summary>
        /// <param name="item">
        ///     The item.
        /// </param>
        /// <param name="container">
        ///     The container.
        /// </param>
        /// <returns>
        ///     The <see cref="DataTemplate" />.
        /// </returns>
        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            // ReSharper disable ConditionIsAlwaysTrueOrFalse
            // ReSharper disable HeuristicUnreachableCode
            if (item == null || container == null) return null;

            // ReSharper restore HeuristicUnreachableCode
            // ReSharper restore ConditionIsAlwaysTrueOrFalse
            string key = item.GetType().Name;
            var ele = container.As<FrameworkElement>();
            if (ele == null) return null;

            var temp = ele.TryFindResource(key).As<DataTemplate>();
            return temp;
        }