public void AddNewTabForUrl(string url, bool focusOnNewTab, Action <TabItem> callback = null) { if (!string.IsNullOrWhiteSpace(url)) { int _tabElements = TabItemCollection.Count; TabItem newTab = new TabItem(Model, resolver); newTab.SearchBar.Address = url; newTab.CloseButtonVisibility = Visibility.Visible; int count = TabItemCollection.Where(x => x.CloseButtonVisibility == Visibility.Visible).Count(); if (count > 0) { if (count >= MAX_TAB_COUNT) { var tab = TabItemCollection.LastOrDefault(x => x.CloseButtonVisibility == Visibility.Visible); tab.SearchBar.Address = url; tab.SearchBar.Navigate(); } else { TabItemCollection.Insert(count, newTab); } } else { TabItemCollection.Insert(0, newTab); } if (focusOnNewTab) { if (TabItemCollection.Count > 1) { bool isNewButtonVisible = TabItemCollection.Any(x => x.NewTabButtonVisibility); if (isNewButtonVisible) { Model.SelectedIndex = TabItemCollection.Count - 2; } else { Model.SelectedIndex = TabItemCollection.Count - 1; } } else { Model.SelectedIndex = 0; } } if (callback != null) { callback(newTab); } } ShowAddNewTabIfNeeded(); }