Exemplo n.º 1
0
        public object GetResult <TKEY, T>(PpsShellWpf shell)
            where TKEY : ResourceKey
        {
            var result = shell.FindResourceByKey <TKEY, T>();

            // order result
            if (Order || Comparer != null)
            {
                if (Comparer != null)
                {
                    if (Comparer is IComparer <T> comparer)
                    {
                        result = result.OrderBy(c => c, comparer);
                    }
                    else
                    {
                        throw new ArgumentOutOfRangeException(nameof(Comparer), $"Comparer does not implement '{typeof(IComparer<T>).GetType().Name}'.");
                    }
                }
                else if (typeof(IComparable <T>).IsAssignableFrom(typeof(T)))
                {
                    result = result.OrderBy(c => c);
                }
                else
                {
                    throw new ArgumentOutOfRangeException(nameof(Comparer), $"Resource does not implement '{typeof(IComparable<T>).GetType().Name}'.");
                }
            }

            return(CreateArray ? result.ToArray() : result);
        }         // func GetResult
Exemplo n.º 2
0
        }         // ctor

        /// <summary></summary>
        /// <param name="e"></param>
        protected override void OnInitialized(EventArgs e)
        {
            var env = PpsShellWpf.GetShell(this);

            CommandManager.AddExecutedHandler(this, env.DefaultExecutedHandler);
            CommandManager.AddCanExecuteHandler(this, env.DefaultCanExecuteHandler);

            base.OnInitialized(e);
        }         // proc OnInitialized
Exemplo n.º 3
0
        }         // func GetResult

        /// <summary></summary>
        /// <param name="serviceProvider"></param>
        /// <returns></returns>
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            // find shell
            var rootObject = serviceProvider.GetService <IRootObjectProvider>(true);
            var shell      = PpsShellWpf.GetShell((DependencyObject)rootObject.RootObject);

            // make select method
            var m = findResourceKeyMethodInfo.MakeGenericMethod(ResourceKeyType, ResourceType ?? typeof(object));

            return(m.Invoke(this, new object[] { shell }));
        }         // func ProvideValue