|
8 | 8 | using Microsoft.UI.Xaml; |
9 | 9 | using Microsoft.UI.Xaml.Controls; |
10 | 10 | using Microsoft.UI.Xaml.Input; |
11 | | -using Microsoft.UI.Xaml.Media; |
12 | 11 | using Microsoft.UI.Xaml.Navigation; |
13 | 12 | using System.IO; |
14 | 13 | using Windows.Storage; |
@@ -88,6 +87,19 @@ public ColumnLayoutPage() : base() |
88 | 87 | doubleClickTimer = DispatcherQueue.CreateTimer(); |
89 | 88 | } |
90 | 89 |
|
| 90 | + private void SetOpenedFolder(ListViewItem? lvi) |
| 91 | + { |
| 92 | + SetRowStyle(openedFolderPresenter, null); |
| 93 | + openedFolderPresenter = lvi; |
| 94 | + SetRowStyle(openedFolderPresenter, this.Resources["PathTracedRowStyle"] as Style); |
| 95 | + } |
| 96 | + |
| 97 | + private static void SetRowStyle(ListViewItem? lvi, Style? style) |
| 98 | + { |
| 99 | + if (lvi?.FindDescendant<Grid>() is Grid row) |
| 100 | + row.Style = style; |
| 101 | + } |
| 102 | + |
91 | 103 | // Methods |
92 | 104 |
|
93 | 105 | private void OnItemLoadStatusChanged(object sender, ItemLoadStatusChangedEventArgs args) |
@@ -117,19 +129,10 @@ private void ColumnViewBase_GotFocus(object sender, RoutedEventArgs e) |
117 | 129 |
|
118 | 130 | private void ColumnViewBase_ItemInvoked(object? sender, EventArgs e) |
119 | 131 | { |
120 | | - ClearOpenedFolderSelectionIndicator(); |
121 | | - openedFolderPresenter = FileList.ContainerFromItem(FileList.SelectedItem) as ListViewItem; |
| 132 | + SetOpenedFolder(FileList.ContainerFromItem(FileList.SelectedItem) as ListViewItem); |
122 | 133 | } |
123 | 134 |
|
124 | | - internal void ClearOpenedFolderSelectionIndicator() |
125 | | - { |
126 | | - if (openedFolderPresenter is null) |
127 | | - return; |
128 | | - |
129 | | - openedFolderPresenter.Background = new SolidColorBrush(Microsoft.UI.Colors.Transparent); |
130 | | - SetFolderBackground(openedFolderPresenter, new SolidColorBrush(Microsoft.UI.Colors.Transparent)); |
131 | | - openedFolderPresenter = null; |
132 | | - } |
| 135 | + internal void ClearOpenedFolderSelectionIndicator() => SetOpenedFolder(null); |
133 | 136 |
|
134 | 137 | protected override void ItemManipulationModel_ScrollIntoViewInvoked(object? sender, ListedItem e) |
135 | 138 | { |
@@ -196,9 +199,7 @@ private void HighlightPathDirectory(ListViewBase sender, ContainerContentChangin |
196 | 199 | if (args.Item is ListedItem item && columnsOwner?.OwnerPath is string ownerPath |
197 | 200 | && (ownerPath == item.ItemPath || (ownerPath.Length > item.ItemPath.Length && ownerPath.StartsWith(item.ItemPath) && ownerPath[item.ItemPath.Length] is '/' or '\\'))) |
198 | 201 | { |
199 | | - SetFolderBackground(args.ItemContainer as ListViewItem, this.Resources["ListViewItemBackgroundSelected"] as SolidColorBrush); |
200 | | - |
201 | | - openedFolderPresenter = FileList.ContainerFromItem(item) as ListViewItem; |
| 202 | + SetOpenedFolder(FileList.ContainerFromItem(item) as ListViewItem); |
202 | 203 | FileList.ContainerContentChanging -= HighlightPathDirectory; |
203 | 204 | } |
204 | 205 | } |
@@ -338,11 +339,6 @@ protected override void OnSelectionChanged(SelectionChangedEventArgs e) |
338 | 339 | if (e.AddedItems.Count > 0) |
339 | 340 | columnsOwner?.HandleSelectionChange(this); |
340 | 341 |
|
341 | | - if (e.RemovedItems.Count > 0 && openedFolderPresenter != null) |
342 | | - { |
343 | | - SetFolderBackground(openedFolderPresenter, this.Resources["ListViewItemBackgroundSelected"] as SolidColorBrush); |
344 | | - } |
345 | | - |
346 | 342 | if (SelectedItems?.Count == 1 && SelectedItem?.PrimaryItemAttribute is StorageItemTypes.Folder) |
347 | 343 | { |
348 | 344 | TryOpenSelectedFolder(); |
@@ -692,16 +688,5 @@ internal void ClearSelectionIndicator() |
692 | 688 | FileList.SelectedItem = null; |
693 | 689 | LockPreviewPaneContent = false; |
694 | 690 | } |
695 | | - |
696 | | - private static void SetFolderBackground(ListViewItem? lvi, SolidColorBrush? backgroundColor) |
697 | | - { |
698 | | - if (lvi == null || backgroundColor == null) return; |
699 | | - |
700 | | - |
701 | | - if (lvi.FindDescendant<Grid>() is Grid presenter) |
702 | | - { |
703 | | - presenter.Background = backgroundColor; |
704 | | - } |
705 | | - } |
706 | 691 | } |
707 | 692 | } |
0 commit comments