public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            eElementStateType state = (eElementStateType)value;

            Style answer = null;

            switch (state)
            {
            case eElementStateType.Exist:
                answer = Application.Current.FindResource("CellStackPanelDefaultStyle") as Style;
                break;

            case eElementStateType.Empty:
                answer = Application.Current.FindResource("CellStackPanelEmptytStyle") as Style;
                break;

            case eElementStateType.Add:
                answer = Application.Current.FindResource("CellStackPanelAddStyle") as Style;
                break;

            case eElementStateType.Delete:
                answer = Application.Current.FindResource("CellStackPanelDeleteStyle") as Style;
                break;

            case eElementStateType.CreateLink:
                answer = Application.Current.FindResource("CellStackPanelLinkStyle") as Style;
                break;

            default:
                break;
            }

            return(answer);
        }
        /// <summary>
        /// Получить имена элементов в зависимости от объекта, типа эемента и состояния элемента
        /// </summary>
        /// <param name="splitterObjectType">Тип объекта</param>
        /// <param name="elementStates">Состояние элемента (можно несколько)</param>
        /// <param name="packageElementType">Тип элемента  (можно несколько)</param>
        /// <returns></returns>
        private IEnumerable <string> GetNames(eSplitterObjectType splitterObjectType, eElementStateType elementStates, ePackageElementType packageElementType = ePackageElementType.Procedure | ePackageElementType.Function)
        {
            var x             = Expr.Expression.Parameter(typeof(SplitterElement), "x");
            var HasFlagMethod = typeof(Enum).GetMethod("HasFlag", new[] { typeof(Enum) });

            var xPackageElementType = Expr.Expression.Convert(Expr.Expression.PropertyOrField(x, "PackageElementType"), typeof(Enum));
            var xPackageElementTypeHasFlagExpression = Expr.Expression.Call(Expr.Expression.Constant(packageElementType, typeof(Enum)), HasFlagMethod, xPackageElementType);

            var xObjectType = Expr.Expression.Convert(Expr.Expression.PropertyOrField(x, splitterObjectType.ToString()), typeof(Enum));
            var xObjectTypeHasFlagExpression = Expr.Expression.Call(Expr.Expression.Constant(elementStates, typeof(Enum)), HasFlagMethod, xObjectType);

            var FinalExpression = Expr.Expression.AndAlso(xPackageElementTypeHasFlagExpression, xObjectTypeHasFlagExpression);
            var Filter          = (Func <SplitterElement, bool>)Expr.Expression.Lambda(FinalExpression, x).Compile();

            Seri.Log.Verbose($"GetName Filter: {FinalExpression}");

            /* Пример результата отбора
             * _splitter.Elements.Where(x => packageElementType.HasFlag(x.PackageElementType) && elementStates.HasFlag(x.NewSpec));
             * где вместо x.NewSpec подставится поле в зависимости от splitterObjectType
             */
            return(_splitter.Elements.Where(Filter).Select(x => x.PackageElementName));
        }