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