public void CreateTab([NotNull] ItemUri itemUri, bool deep) { Assert.ArgumentNotNull(itemUri, nameof(itemUri)); foreach (var i in Tabs.Items) { var t = i as TabItem; if (t == null) { continue; } var l = t.Content as SitecoreCopTab; if (l == null) { continue; } if (l.ItemUri != itemUri || l.Deep != deep) { continue; } t.IsSelected = true; } ExecuteCompleted completed = delegate(string response, ExecuteResult result) { if (!DataService.HandleExecute(response, result)) { return; } var element = response.ToXElement(); if (element == null) { return; } var item = ItemHeader.Parse(itemUri.DatabaseUri, element); var tabItem = new TabItem(); var tab = new SitecoreCopTab { ItemUri = itemUri, TabItem = tabItem }; var tabHeader = new TabItemHeader { Header = item.Name + (deep ? " (Deep)" : string.Empty), Tag = tab }; tabHeader.Click += delegate { CloseTab(tabItem); }; tabItem.Header = tabHeader; Tabs.Items.Add(tabItem); tabItem.Content = tab; tabItem.IsSelected = true; EnableTabs(); tab.Initialize(itemUri, deep); }; itemUri.Site.DataService.ExecuteAsync("Items.GetItemHeader", completed, itemUri.ItemId.ToString(), itemUri.DatabaseName.Name); }