diff --git a/Files/BaseLayout.cs b/Files/BaseLayout.cs index fada4a3c756a..ed0cecd3cb0d 100644 --- a/Files/BaseLayout.cs +++ b/Files/BaseLayout.cs @@ -126,6 +126,8 @@ public BaseLayout() protected abstract void SetSelectedItemsOnUi(List selectedItems); + public abstract void FocusSelectedItems(); + protected abstract ListedItem GetItemFromElement(object element); private void AppSettings_LayoutModeChangeRequested(object sender, EventArgs e) @@ -275,10 +277,6 @@ private void Page_Loaded(object sender, RoutedEventArgs e) protected virtual void Page_CharacterReceived(CoreWindow sender, CharacterReceivedEventArgs args) { - var focusedElement = FocusManager.GetFocusedElement(XamlRoot) as FrameworkElement; - if (focusedElement is TextBox) - return; - char letterPressed = Convert.ToChar(args.KeyCode); App.CurrentInstance.InteractionOperations.PushJumpChar(letterPressed); } @@ -321,6 +319,11 @@ protected async void Item_DragStarting(object sender, DragStartingEventArgs e) selectedStorageItems.Add(await StorageFolder.GetFolderFromPathAsync(item.ItemPath)); } + if (selectedStorageItems.Count == 0) { + e.Cancel = true; + return; + } + e.Data.SetStorageItems(selectedStorageItems); e.DragUI.SetContentFromDataPackage(); } @@ -354,7 +357,7 @@ protected async void Item_Drop(object sender, DragEventArgs e) protected void InitializeDrag(UIElement element) { ListedItem item = GetItemFromElement(element); - if(item != null) + if (item != null) { element.AllowDrop = false; element.DragStarting -= Item_DragStarting; diff --git a/Files/Dialogs/AddItemDialog.xaml.cs b/Files/Dialogs/AddItemDialog.xaml.cs index d8778a2c6dec..342d7d7b7242 100644 --- a/Files/Dialogs/AddItemDialog.xaml.cs +++ b/Files/Dialogs/AddItemDialog.xaml.cs @@ -57,7 +57,12 @@ public static async void CreateFile(AddItemType fileType) StorageFolder folderToCreateItem = await StorageFolder.GetFolderFromPathAsync(currentPath); RenameDialog renameDialog = new RenameDialog(); - await renameDialog.ShowAsync(); + var renameResult = await renameDialog.ShowAsync(); + if (renameResult == ContentDialogResult.Secondary) + { + return; + } + var userInput = renameDialog.storedRenameInput; if (fileType == AddItemType.Folder) diff --git a/Files/Dialogs/RenameDialog.xaml b/Files/Dialogs/RenameDialog.xaml index 2b3bf298e3f6..f5b392c7385d 100644 --- a/Files/Dialogs/RenameDialog.xaml +++ b/Files/Dialogs/RenameDialog.xaml @@ -7,7 +7,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:Windows10version1903="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 8)" - CornerRadius="4" Grid.RowSpan="4" DefaultButton="Primary" Title="Enter an item name" BorderThickness="0" SecondaryButtonClick="NameDialog_SecondaryButtonClick" PrimaryButtonClick="NameDialog_PrimaryButtonClick" x:Name="NameDialog" PrimaryButtonText="Set Name" SecondaryButtonText="Cancel" x:Uid="RenameDialog"> + CornerRadius="4" Grid.RowSpan="4" DefaultButton="Primary" Title="Enter an item name" BorderThickness="0" PrimaryButtonClick="NameDialog_PrimaryButtonClick" x:Name="NameDialog" PrimaryButtonText="Set Name" SecondaryButtonText="Cancel" x:Uid="RenameDialog"> diff --git a/Files/Dialogs/RenameDialog.xaml.cs b/Files/Dialogs/RenameDialog.xaml.cs index 4d16dae8cd4f..fd41c9bf10d6 100644 --- a/Files/Dialogs/RenameDialog.xaml.cs +++ b/Files/Dialogs/RenameDialog.xaml.cs @@ -32,11 +32,5 @@ private void NameDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogBu { storedRenameInput = inputBox.Text; } - - private void NameDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) - { - storedRenameInput = null; - } - } } diff --git a/Files/Helpers/NaturalStringComparer.cs b/Files/Helpers/NaturalStringComparer.cs index d7d0215a64d5..330c691fa667 100644 --- a/Files/Helpers/NaturalStringComparer.cs +++ b/Files/Helpers/NaturalStringComparer.cs @@ -21,7 +21,7 @@ internal static class SafeNativeMethods public static readonly String LOCALE_NAME_INVARIANT = String.Empty; public static readonly String LOCALE_NAME_SYSTEM_DEFAULT = "!sys-default-locale"; - [DllImport("api-ms-win-core-string-l1-1-0 .dll", CharSet = CharSet.Unicode)] + [DllImport("api-ms-win-core-string-l1-1-0.dll", CharSet = CharSet.Unicode)] public static extern Int32 CompareStringEx( String localeName, Int32 flags, diff --git a/Files/Interacts/Interaction.cs b/Files/Interacts/Interaction.cs index c2331e38253b..2fd24c5b7ed0 100644 --- a/Files/Interacts/Interaction.cs +++ b/Files/Interacts/Interaction.cs @@ -105,25 +105,16 @@ public async void OpenInNewWindowItem_Click(object sender, RoutedEventArgs e) } } - public void OpenDirectoryInNewTab_Click(object sender, RoutedEventArgs e) + public async void OpenDirectoryInNewTab_Click(object sender, RoutedEventArgs e) { var CurrentSourceType = App.CurrentInstance.CurrentPageType; - if (CurrentSourceType == typeof(GenericFileBrowser)) - { - var items = (CurrentInstance.ContentPage as BaseLayout).SelectedItems; - foreach (ListedItem listedItem in items) - { - instanceTabsView.AddNewTab(typeof(ModernShellPage), listedItem.ItemPath); - } - - } - else if (CurrentSourceType == typeof(PhotoAlbum)) + var items = (CurrentInstance.ContentPage as BaseLayout).SelectedItems; + foreach (ListedItem listedItem in items) { - var items = (CurrentInstance.ContentPage as BaseLayout).SelectedItems; - foreach (ListedItem listedItem in items) + await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { instanceTabsView.AddNewTab(typeof(ModernShellPage), listedItem.ItemPath); - } + }); } } @@ -943,7 +934,7 @@ public async Task PasteItems(DataPackageView packageView, string destinationPath if (acceptedOperation == DataPackageOperation.Move) { - foreach (IStorageItem item in itemsToPaste) + foreach (IStorageItem item in pastedItems) { if (item.IsOfType(StorageItemTypes.File)) { @@ -965,6 +956,7 @@ public async Task PasteItems(DataPackageView packageView, string destinationPath List pastedItemPaths = pastedItems.Select(item => item.Path).ToList(); List copiedItems = CurrentInstance.ViewModel.FilesAndFolders.Where(listedItem => pastedItemPaths.Contains(listedItem.ItemPath)).ToList(); CurrentInstance.ContentPage.SelectedItems = copiedItems; + CurrentInstance.ContentPage.FocusSelectedItems(); } packageView.ReportOperationCompleted(acceptedOperation); } @@ -1087,34 +1079,21 @@ await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal public void SelectAllItems() { - if (App.CurrentInstance.CurrentPageType == typeof(GenericFileBrowser)) - { - var CurrentInstance = App.CurrentInstance; - foreach (ListedItem li in (CurrentInstance.ContentPage as GenericFileBrowser).AllView.ItemsSource) - { - if (!(CurrentInstance.ContentPage as GenericFileBrowser).SelectedItems.Contains(li)) - { - (CurrentInstance.ContentPage as GenericFileBrowser).AllView.SelectedItems.Add(li); - } - } - } - else if (App.CurrentInstance.CurrentPageType == typeof(PhotoAlbum)) - { - (CurrentInstance.ContentPage as PhotoAlbum).FileList.SelectAll(); - } + CurrentInstance.ContentPage.SelectedItems = App.CurrentInstance.ViewModel.FilesAndFolders.ToList(); + } + + public void InvertAllItems() + { + List oldSelectedItems = CurrentInstance.ContentPage.SelectedItems; + List newSelectedItems = CurrentInstance.ViewModel.FilesAndFolders.ToList(); + foreach (ListedItem listedItem in oldSelectedItems) + newSelectedItems.Remove(listedItem); + CurrentInstance.ContentPage.SelectedItems = newSelectedItems; } public void ClearAllItems() { - if (App.CurrentInstance.CurrentPageType == typeof(GenericFileBrowser)) - { - var CurrentInstance = App.CurrentInstance; - (CurrentInstance.ContentPage as GenericFileBrowser).AllView.SelectedItems.Clear(); - } - else if (App.CurrentInstance.CurrentPageType == typeof(PhotoAlbum)) - { - (CurrentInstance.ContentPage as PhotoAlbum).FileList.SelectedItems.Clear(); - } + CurrentInstance.ContentPage.SelectedItems = new List(); } public void ToggleQuickLook_Click(object sender, RoutedEventArgs e) diff --git a/Files/MultilingualResources/Files.de-DE.xlf b/Files/MultilingualResources/Files.de-DE.xlf index 82e36f0a5f80..66e5fc86149f 100644 --- a/Files/MultilingualResources/Files.de-DE.xlf +++ b/Files/MultilingualResources/Files.de-DE.xlf @@ -578,6 +578,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/MultilingualResources/Files.es-ES.xlf b/Files/MultilingualResources/Files.es-ES.xlf index 363d3d052ea2..d52116f8130b 100644 --- a/Files/MultilingualResources/Files.es-ES.xlf +++ b/Files/MultilingualResources/Files.es-ES.xlf @@ -574,7 +574,11 @@ Settings Ajustes + + Invert Selection + Invert Selection + - + \ No newline at end of file diff --git a/Files/MultilingualResources/Files.fr-FR.xlf b/Files/MultilingualResources/Files.fr-FR.xlf index faed07f050bd..1cbf08b1e5df 100644 --- a/Files/MultilingualResources/Files.fr-FR.xlf +++ b/Files/MultilingualResources/Files.fr-FR.xlf @@ -576,6 +576,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/MultilingualResources/Files.nl-NL.xlf b/Files/MultilingualResources/Files.nl-NL.xlf index b6a4f90bef2b..a8f6b450c5ea 100644 --- a/Files/MultilingualResources/Files.nl-NL.xlf +++ b/Files/MultilingualResources/Files.nl-NL.xlf @@ -576,6 +576,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/MultilingualResources/Files.pl-PL.xlf b/Files/MultilingualResources/Files.pl-PL.xlf index 2545e9e8088c..fc6b5606941f 100644 --- a/Files/MultilingualResources/Files.pl-PL.xlf +++ b/Files/MultilingualResources/Files.pl-PL.xlf @@ -576,6 +576,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/MultilingualResources/Files.ru-RU.xlf b/Files/MultilingualResources/Files.ru-RU.xlf index 03d93ad1e81b..d42fef60234f 100644 --- a/Files/MultilingualResources/Files.ru-RU.xlf +++ b/Files/MultilingualResources/Files.ru-RU.xlf @@ -577,6 +577,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/MultilingualResources/Files.tr-TR.xlf b/Files/MultilingualResources/Files.tr-TR.xlf index 93196112accc..6d2d73ff194f 100644 --- a/Files/MultilingualResources/Files.tr-TR.xlf +++ b/Files/MultilingualResources/Files.tr-TR.xlf @@ -576,6 +576,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/MultilingualResources/Files.uk-UA.xlf b/Files/MultilingualResources/Files.uk-UA.xlf index e3ee88764956..0430686ae3d5 100644 --- a/Files/MultilingualResources/Files.uk-UA.xlf +++ b/Files/MultilingualResources/Files.uk-UA.xlf @@ -577,6 +577,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/MultilingualResources/Files.zh-Hans.xlf b/Files/MultilingualResources/Files.zh-Hans.xlf index 2f6254fd2f40..8fcf774f1726 100644 --- a/Files/MultilingualResources/Files.zh-Hans.xlf +++ b/Files/MultilingualResources/Files.zh-Hans.xlf @@ -576,6 +576,10 @@ Settings Settings + + Invert Selection + Invert Selection + diff --git a/Files/Strings/en-US/Resources.resw b/Files/Strings/en-US/Resources.resw index 4d6e4b444ffd..cd976cd92b7d 100644 --- a/Files/Strings/en-US/Resources.resw +++ b/Files/Strings/en-US/Resources.resw @@ -155,7 +155,7 @@ Text Document - + Copy Path @@ -219,21 +219,24 @@ Select All + + Invert Selection + Clear Selection - + List View Grid View - + Modified: Clear all items - + Enter a path diff --git a/Files/UserControls/LayoutModes/GenericFileBrowser.xaml.cs b/Files/UserControls/LayoutModes/GenericFileBrowser.xaml.cs index d526218d188a..67434b287344 100644 --- a/Files/UserControls/LayoutModes/GenericFileBrowser.xaml.cs +++ b/Files/UserControls/LayoutModes/GenericFileBrowser.xaml.cs @@ -86,9 +86,9 @@ protected override void SetSelectedItemOnUi(ListedItem selectedItem) { AllView.SelectedItem = selectedItem; AllView.UpdateLayout(); - AllView.ScrollIntoView(AllView.SelectedItem, null); } } + protected override void SetSelectedItemsOnUi(List selectedItems) { // To prevent program from crashing when the page is first loaded @@ -108,6 +108,10 @@ protected override void SetSelectedItemsOnUi(List selectedItems) foreach (ListedItem selectedItem in selectedItems) AllView.SelectedItems.Add(selectedItem); AllView.UpdateLayout(); + } + + public override void FocusSelectedItems() + { AllView.ScrollIntoView(AllView.ItemsSource.Cast().Last(), null); } @@ -136,14 +140,14 @@ private async void ViewModel_PropertyChanged(object sender, PropertyChangedEvent // Swap arrows SortedColumn = _sortedColumn; } - else if (e.PropertyName == "isLoadingItems") + else if (e.PropertyName == "IsLoadingItems") { if (!AssociatedViewModel.IsLoadingItems && AssociatedViewModel.FilesAndFolders.Count > 0) { var allRows = new List(); Interacts.Interaction.FindChildren(allRows, AllView); - foreach (DataGridRow row in allRows.Take(20)) + foreach (DataGridRow row in allRows.Take(25)) { if (!(row.DataContext as ListedItem).ItemPropertiesInitialized) { @@ -216,7 +220,7 @@ private async void AllView_Sorting(object sender, DataGridColumnEventArgs e) var allRows = new List(); Interacts.Interaction.FindChildren(allRows, AllView); - foreach (DataGridRow row in allRows.Take(20)) + foreach (DataGridRow row in allRows.Take(25)) { if (!(row.DataContext as ListedItem).ItemPropertiesInitialized) { @@ -256,6 +260,12 @@ protected override void Page_CharacterReceived(CoreWindow sender, CharacterRecei { if (App.CurrentInstance.CurrentPageType == typeof(GenericFileBrowser)) { + var focusedElement = FocusManager.GetFocusedElement(XamlRoot) as FrameworkElement; + if (focusedElement is TextBox) + { + return; + } + base.Page_CharacterReceived(sender, args); AllView.Focus(FocusState.Keyboard); } diff --git a/Files/UserControls/LayoutModes/PhotoAlbum.xaml.cs b/Files/UserControls/LayoutModes/PhotoAlbum.xaml.cs index bda379178a7b..e2b94a21f79a 100644 --- a/Files/UserControls/LayoutModes/PhotoAlbum.xaml.cs +++ b/Files/UserControls/LayoutModes/PhotoAlbum.xaml.cs @@ -29,7 +29,6 @@ protected override void SetSelectedItemOnUi(ListedItem selectedItem) { FileList.SelectedItem = selectedItem; FileList.UpdateLayout(); - FileList.ScrollIntoView(FileList.SelectedItem); } } protected override void SetSelectedItemsOnUi(List selectedItems) @@ -40,11 +39,10 @@ protected override void SetSelectedItemsOnUi(List selectedItems) foreach (ListedItem listedItem in FileList.Items) { GridViewItem gridViewItem = FileList.ContainerFromItem(listedItem) as GridViewItem; - List grids = new List(); Interaction.FindChildren(grids, gridViewItem); - var imageOfItem = grids.Find(x => x.Tag?.ToString() == "ItemRoot"); - imageOfItem.CanDrag = selectedItems.Contains(listedItem); + var rootItem = grids.Find(x => x.Tag?.ToString() == "ItemRoot"); + rootItem.CanDrag = selectedItems.Contains(listedItem); } } @@ -56,6 +54,10 @@ protected override void SetSelectedItemsOnUi(List selectedItems) foreach (ListedItem selectedItem in selectedItems) FileList.SelectedItems.Add(selectedItem); FileList.UpdateLayout(); + } + + public override void FocusSelectedItems() + { FileList.ScrollIntoView(FileList.Items.Last()); } @@ -174,6 +176,12 @@ protected override void Page_CharacterReceived(CoreWindow sender, CharacterRecei { if (App.CurrentInstance.CurrentPageType == typeof(PhotoAlbum) && !isRenamingItem) { + var focusedElement = FocusManager.GetFocusedElement(XamlRoot) as FrameworkElement; + if (focusedElement is TextBox) + { + return; + } + base.Page_CharacterReceived(sender, args); FileList.Focus(FocusState.Keyboard); } diff --git a/Files/UserControls/StatusBarControl.xaml b/Files/UserControls/StatusBarControl.xaml index 620dca0c49b4..b12d0039d5da 100644 --- a/Files/UserControls/StatusBarControl.xaml +++ b/Files/UserControls/StatusBarControl.xaml @@ -37,10 +37,20 @@ + + + + + diff --git a/Files/View Models/ItemViewModel.cs b/Files/View Models/ItemViewModel.cs index 215f39711136..7c00f37f75fe 100644 --- a/Files/View Models/ItemViewModel.cs +++ b/Files/View Models/ItemViewModel.cs @@ -574,6 +574,7 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize if (matchingItem != null && matchingStorageItem != null) { matchingItem.FolderRelativeId = matchingStorageItem.FolderRelativeId; + matchingItem.ItemType = matchingStorageItem.DisplayType; var Thumbnail = await matchingStorageItem.GetThumbnailAsync(ThumbnailMode.ListView, thumbnailSize, ThumbnailOptions.UseCurrentScale); if (Thumbnail != null) { diff --git a/Files/View Models/SelectedItemPropertiesViewModel.cs b/Files/View Models/SelectedItemPropertiesViewModel.cs index 25ee74cd4448..8f8e745d2782 100644 --- a/Files/View Models/SelectedItemPropertiesViewModel.cs +++ b/Files/View Models/SelectedItemPropertiesViewModel.cs @@ -16,6 +16,8 @@ public string ItemName { get { + if (App.CurrentInstance.ContentPage == null) return null; + if (App.CurrentInstance.ContentPage.IsItemSelected) { return App.CurrentInstance.ContentPage.SelectedItems[0].ItemName; @@ -30,6 +32,8 @@ public string ItemType { get { + if (App.CurrentInstance.ContentPage == null) return null; + if (App.CurrentInstance.ContentPage.IsItemSelected) { return App.CurrentInstance.ContentPage.SelectedItems[0].ItemType; @@ -44,6 +48,8 @@ public string ItemPath { get { + if (App.CurrentInstance.ContentPage == null) return null; + if (App.CurrentInstance.ContentPage.IsItemSelected) { return App.CurrentInstance.ContentPage.SelectedItems[0].ItemPath; @@ -54,10 +60,12 @@ public string ItemPath } } } - public string ItemSize + public string ItemSize { get { + if (App.CurrentInstance.ContentPage == null) return null; + if (App.CurrentInstance.ContentPage.IsItemSelected) { return App.CurrentInstance.ContentPage.SelectedItems[0].FileSize; @@ -72,6 +80,8 @@ public string ItemCreatedTimestamp { get { + if (App.CurrentInstance.ContentPage == null) return null; + if (App.CurrentInstance.ContentPage.IsItemSelected) { DateTimeOffset dateCreated; @@ -95,6 +105,8 @@ public string ItemModifiedTimestamp { get { + if (App.CurrentInstance.ContentPage == null) return null; + if (App.CurrentInstance.ContentPage.IsItemSelected) { return App.CurrentInstance.ContentPage.SelectedItems[0].ItemDateModified; @@ -109,6 +121,8 @@ public ImageSource FileIconSource { get { + if (App.CurrentInstance.ContentPage == null) return null; + if (App.CurrentInstance.ContentPage.IsItemSelected) { return App.CurrentInstance.ContentPage.SelectedItems[0].FileImage; diff --git a/Files/View Models/SettingsViewModel.cs b/Files/View Models/SettingsViewModel.cs index aedc0396398d..b045e5ea645e 100644 --- a/Files/View Models/SettingsViewModel.cs +++ b/Files/View Models/SettingsViewModel.cs @@ -470,37 +470,37 @@ public string WinDirPath public string DesktopPath { - get => Get(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); + get => Get(UserDataPaths.GetDefault().Desktop); set => Set(value); } public string DocumentsPath { - get => Get(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); + get => Get(UserDataPaths.GetDefault().Documents); set => Set(value); } public string DownloadsPath { - get => Get(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\Downloads"); + get => Get(UserDataPaths.GetDefault().Downloads); set => Set(value); } public string PicturesPath { - get => Get(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)); + get => Get(UserDataPaths.GetDefault().Pictures); set => Set(value); } public string MusicPath { - get => Get(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)); + get => Get(UserDataPaths.GetDefault().Music); set => Set(value); } public string VideosPath { - get => Get(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)); + get => Get(UserDataPaths.GetDefault().Videos); set => Set(value); } diff --git a/Files/Views/InstanceTabsView.xaml b/Files/Views/InstanceTabsView.xaml index 0cbdad7a87b1..6fe13a450346 100644 --- a/Files/Views/InstanceTabsView.xaml +++ b/Files/Views/InstanceTabsView.xaml @@ -6,16 +6,103 @@ xmlns:local="using:Files" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:muxc="using:Microsoft.UI.Xaml.Controls" - xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives" + xmlns:primitives="using:Microsoft.UI.Xaml.Controls.Primitives" xmlns:contract6Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" mc:Ignorable="d"> + + + (); - } + //Microsoft.UI.Xaml.Controls.FontIconSource icon = new Microsoft.UI.Xaml.Controls.FontIconSource(); + //icon.Glyph = "\xE713"; + //if ((tabView.SelectedItem as TabViewItem).Header.ToString() != ResourceController.GetTranslation("SidebarSettings/Text") && (tabView.SelectedItem as TabViewItem).IconSource != icon) + //{ + // App.CurrentInstance = ItemViewModel.GetCurrentSelectedTabInstance(); + //} } public void AddNewTab(Type t, string path) @@ -199,14 +201,21 @@ public void AddNewTab(Type t, string path) Header = tabLocationHeader, Content = gr, Width = 200, - IconSource = tabIcon + IconSource = tabIcon, + Transitions = null, + ContentTransitions = null }; tabView.TabItems.Add(tvi); - TabStrip.SelectedItem = TabStrip.TabItems[TabStrip.TabItems.Count - 1]; - if (tabView.SelectedItem == tvi) + TabStrip.SelectedIndex = TabStrip.TabItems.Count - 1; + + var tabViewItemFrame = (tvi.Content as Grid).Children[0] as Frame; + tabViewItemFrame.Loaded += delegate { - (((tabView.SelectedItem as TabViewItem).Content as Grid).Children[0] as Frame).Navigate(t, path); - } + if (tabViewItemFrame.CurrentSourcePageType != typeof(ModernShellPage)) + { + tabViewItemFrame.Navigate(t, path); + } + }; } public async void SetSelectedTabInfo(string text, string currentPathForTabIcon = null)