/// <summary>
        /// Ищет родителя переданного элемента начиная с корневого элемента главной сущности.
        /// Если элемент не найден, вернется null.
        /// </summary>
        /// <param name="mainItem"></param>
        /// <param name="child"></param>
        /// <returns></returns>
        public static IWixElement GetParent(this IWixMainEntity mainItem, IWixElement child)
        {
            Stack<IWixElement> stack = new Stack<IWixElement>();
              stack.Push(mainItem.RootElement);
              while (stack.Any())
              {
            IWixElement item = stack.Pop();

            // Если элемент найден, сразу выходим.
            if (item.Items.Contains(child))
              return item;

            foreach (IWixElement i in item.Items)
              stack.Push(i);
              }

              return null;
        }
Example #2
0
 public BuilderModel()
 {
     selectedItem = null;
       MainItem = CreateMainEntity();
       itemsCountDictionaryByType = new Dictionary<Type, int>();
       // Создаем хранилище файлов.
       fileStore = FileStoreCreator.Create();
       // Создадим сообщения о построении и привяжем
       // делегат уведомления об изменении свойства BuildMessages.
       BuildMessages = new ObservableCollection<BuildMessage>();
       IsBuilding = false;
       State = ModelState.New;
 }