Ejemplo n.º 1
0
        /// <summary>
        /// Вспомогательный рекурсивный метод, для поиска нужного звена цепи и установки в него заисимого звена
        /// </summary>
        /// <param name="chainlink"></param>
        /// <param name="ctrl"></param>
        /// <returns></returns>
        private ViewsDependenceChain <T> GetChainLinkByControl(ViewsDependenceChain <T> chainlink, T ctrl)
        {
            if (chainlink != null)
            {
                if (chainlink.View as object == ctrl as object)
                {
                    return(chainlink);
                }

                if (chainlink.DependableViews != null)
                {
                    ViewsDependenceChain <T> chain = new ViewsDependenceChain <T>();
                    foreach (var depchain in chainlink.DependableViews)
                    {
                        if (depchain.View as object == ctrl as object)
                        {
                            chain = depchain;
                        }
                        else
                        {
                            chain = GetChainLinkByControl(depchain, ctrl);
                        }

                        if (chain != null && chain.View != null)
                        {
                            break;
                        }
                    }

                    return(chain);
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Метод устанавливающий основной и зависимый
 /// </summary>
 /// <param name="MainView">Основной вид</param>
 /// <param name="DependableView">Зависимый вид от основного</param>
 public virtual void SetDependableView(T MainView, T DependableView)
 {
     if (MainView != null && DependableView != null)
     {
         view      = new ViewsDependenceChain <T>();
         view.View = MainView;
         ViewsDependenceChain <T> dep_view = new ViewsDependenceChain <T>();
         dep_view.View            = DependableView;
         dep_view.DependableViews = null;
         view.DependableViews.Add(dep_view);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Метод установки следующих зависимых звеньев цепи
 /// </summary>
 /// <param name="MainView">Основной вид</param>
 /// <param name="DependableView">Зависимый вид от основного</param>
 public virtual void AddNextLevelChainLink(T MainView, T DependableView)
 {
     if (view != null)
     {
         var dep_view = GetChainLinkByControl(view, MainView);
         if (dep_view == null)
         {
             throw new Exception("Wrong chain level!!!");
         }
         ViewsDependenceChain <T> dep_chain = new ViewsDependenceChain <T>();
         dep_chain.View = DependableView;
         if (dep_view.DependableViews == null)
         {
             dep_view.DependableViews = new Collection <ViewsDependenceChain <T> >();
         }
         dep_view.DependableViews.Add(dep_chain);
     }
 }