Initial commit: FluidExplorer:从零实现的 WinUI 3 文件资源管理器替代品(Mica、命令栏、面包屑)

This commit is contained in:
WpyQwq
2026-09-19 11:54:03 +08:00
commit 5780fde61a
60 changed files with 15035 additions and 0 deletions
+508
View File
@@ -0,0 +1,508 @@
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="FluidExplorer.Views.ExplorerPaneView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:models="using:FluidExplorer.Models"
xmlns:vm="using:FluidExplorer.ViewModels"
xmlns:ops="using:FluidExplorer.Services.Operations"
Background="Transparent">
<UserControl.Resources>
<!-- 行高对齐资源管理器(详情 30 / 列表 24),保留 WinUI 原生 ListViewItem 模板与动画 -->
<x:Double x:Key="ListViewItemMinHeight">30</x:Double>
<x:Double x:Key="GridViewItemMinHeight">0</x:Double>
<x:Double x:Key="GridViewItemMinWidth">0</x:Double>
<!-- 资源管理器的"图标+文字"工具按钮(新建 / 排序 / 查看):12px 文字、32 高、4 圆角 -->
<Style x:Key="ToolbarTextButtonStyle" TargetType="Button" BasedOn="{StaticResource DefaultButtonStyle}">
<Setter Property="Height" Value="32" />
<Setter Property="MinWidth" Value="0" />
<Setter Property="Padding" Value="8,0" />
<Setter Property="CornerRadius" Value="4" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="FontSize" Value="12" />
</Style>
</UserControl.Resources>
<Grid x:Name="PaneRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- ═══ 命令栏(对齐资源管理器:新建 / 剪切复制粘贴 / 重命名 / 删除 / 撤销 / 排序 / 视图) ═══ -->
<Grid Grid.Row="0" Height="48" Padding="8,0" ColumnSpacing="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Horizontal" Spacing="2">
<Button x:Name="SidebarToggle" Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="导航窗格" Click="OnToggleSidebarClick">
<FontIcon Glyph="&#xE700;" FontSize="16" />
</Button>
<Button Style="{StaticResource ToolbarTextButtonStyle}" ToolTipService.ToolTip="新建 (Ctrl+Shift+N)">
<StackPanel Orientation="Horizontal" Spacing="8">
<FontIcon Glyph="{StaticResource GlyphNew}" FontSize="16" />
<TextBlock Text="新建" VerticalAlignment="Center" />
</StackPanel>
<Button.Flyout>
<MenuFlyout Placement="BottomEdgeAlignedLeft">
<MenuFlyoutItem Text="文件夹" Click="OnNewFolderClick">
<MenuFlyoutItem.Icon><FontIcon Glyph="{StaticResource GlyphFolder}" /></MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutItem Text="文本文档" Click="OnNewTextFileClick">
<MenuFlyoutItem.Icon><FontIcon Glyph="{StaticResource GlyphExtension}" /></MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutSeparator />
<MenuFlyoutItem Text="新建标签页" Click="OnNewTabClick" />
</MenuFlyout>
</Button.Flyout>
</Button>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="2">
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="剪切 (Ctrl+X)" Click="OnCutClick">
<FontIcon Glyph="{StaticResource GlyphCut}" FontSize="16" />
</Button>
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="复制 (Ctrl+C)" Click="OnCopyClick">
<FontIcon Glyph="{StaticResource GlyphCopy}" FontSize="16" />
</Button>
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="粘贴 (Ctrl+V)" Click="OnPasteClick">
<FontIcon Glyph="{StaticResource GlyphPaste}" FontSize="16" />
</Button>
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="重命名 (F2)" Click="OnRenameClick">
<FontIcon Glyph="{StaticResource GlyphRename}" FontSize="16" />
</Button>
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="删除 (Delete)" Click="OnDeleteClick">
<FontIcon Glyph="{StaticResource GlyphDelete}" FontSize="16" />
</Button>
</StackPanel>
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="2" Margin="8,0,0,0">
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="撤销 (Ctrl+Z)" Click="OnUndoClick">
<FontIcon Glyph="{StaticResource GlyphUndo}" FontSize="16" />
</Button>
<Button x:Name="RestoreButton" Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="还原所选项目"
Click="OnRestoreClick" Visibility="Collapsed">
<FontIcon Glyph="{StaticResource GlyphRestore}" FontSize="16" />
</Button>
</StackPanel>
<StackPanel Grid.Column="4" Orientation="Horizontal" Spacing="2">
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="双窗格(Ctrl+Shift+D):左右对拖搬文件"
AutomationProperties.Name="双窗格" Click="OnToggleDualPaneClick">
<FontIcon Glyph="{StaticResource GlyphDualPane}" FontSize="16" />
</Button>
<Button Style="{StaticResource ToolbarTextButtonStyle}" ToolTipService.ToolTip="排序方式">
<StackPanel Orientation="Horizontal" Spacing="8">
<FontIcon Glyph="{StaticResource GlyphSort}" FontSize="16" />
<TextBlock Text="排序" VerticalAlignment="Center" />
</StackPanel>
<Button.Flyout>
<MenuFlyout Placement="BottomEdgeAlignedRight">
<MenuFlyoutItem Text="名称" Tag="Name" Click="OnSortClick" />
<MenuFlyoutItem Text="修改日期" Tag="DateModified" Click="OnSortClick" />
<MenuFlyoutItem Text="类型" Tag="Type" Click="OnSortClick" />
<MenuFlyoutItem Text="大小" Tag="Size" Click="OnSortClick" />
<MenuFlyoutSeparator />
<MenuFlyoutItem Text="升序" Tag="Ascending" Click="OnSortDirectionClick" />
<MenuFlyoutItem Text="降序" Tag="Descending" Click="OnSortDirectionClick" />
</MenuFlyout>
</Button.Flyout>
</Button>
<Button Style="{StaticResource ToolbarTextButtonStyle}" ToolTipService.ToolTip="查看">
<StackPanel Orientation="Horizontal" Spacing="8">
<FontIcon Glyph="{StaticResource GlyphView}" FontSize="16" />
<TextBlock Text="查看" VerticalAlignment="Center" />
</StackPanel>
<Button.Flyout>
<MenuFlyout Placement="BottomEdgeAlignedRight">
<MenuFlyoutItem Text="超大图标" Tag="ExtraLargeIcons" Click="OnViewModeClick" />
<MenuFlyoutItem Text="大图标" Tag="LargeIcons" Click="OnViewModeClick" />
<MenuFlyoutItem Text="中图标" Tag="MediumIcons" Click="OnViewModeClick" />
<MenuFlyoutItem Text="小图标" Tag="SmallIcons" Click="OnViewModeClick" />
<MenuFlyoutItem Text="列表" Tag="List" Click="OnViewModeClick" />
<MenuFlyoutItem Text="详细信息" Tag="Details" Click="OnViewModeClick" />
<MenuFlyoutSeparator />
<ToggleMenuFlyoutItem x:Name="HiddenToggle" Text="显示隐藏的项目" Click="OnToggleHiddenClick" />
<ToggleMenuFlyoutItem x:Name="ExtensionToggle" Text="显示文件扩展名" Click="OnToggleExtensionClick" />
</MenuFlyout>
</Button.Flyout>
</Button>
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="更多选项" Click="OnShellContextMenuClick">
<FontIcon Glyph="{StaticResource GlyphMore}" FontSize="16" />
</Button>
<Button Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="设置" Click="OnOpenSettingsClick">
<FontIcon Glyph="{StaticResource GlyphSettings}" FontSize="16" />
</Button>
</StackPanel>
</Grid>
<!-- ═══ 地址栏(后退/前进/向上/刷新 + 面包屑 + 搜索框) ═══ -->
<Grid Grid.Row="1" Height="40" Padding="8,0" ColumnSpacing="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="后退 (Alt+←)" Click="OnBackClick">
<FontIcon Glyph="{StaticResource GlyphBack}" FontSize="14" />
</Button>
<Button Grid.Column="1" Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="前进 (Alt+→)" Click="OnForwardClick">
<FontIcon Glyph="{StaticResource GlyphForward}" FontSize="14" />
</Button>
<Button Grid.Column="2" Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="向上 (Alt+↑)" Click="OnUpClick">
<FontIcon Glyph="{StaticResource GlyphUp}" FontSize="14" />
</Button>
<Button Grid.Column="3" Style="{StaticResource ToolbarButtonStyle}" ToolTipService.ToolTip="刷新 (F5)" Click="OnRefreshClick">
<FontIcon Glyph="{StaticResource GlyphRefresh}" FontSize="14" />
</Button>
<Grid Grid.Column="4" Margin="4,4" CornerRadius="4" Background="{ThemeResource ControlFillColorDefaultBrush}">
<BreadcrumbBar x:Name="AddressBreadcrumb"
ItemsSource="{x:Bind Pane.Breadcrumbs, Mode=OneWay}"
ItemClicked="OnBreadcrumbClicked" />
<TextBox x:Name="AddressEditor"
Visibility="Collapsed"
BorderThickness="0"
Background="Transparent"
KeyDown="OnAddressEditorKeyDown"
LostFocus="OnAddressEditorLostFocus" />
</Grid>
<AutoSuggestBox x:Name="SearchBox"
Grid.Column="5"
Width="260"
MinWidth="160"
Height="32"
VerticalAlignment="Center"
QueryIcon="Find"
PlaceholderText="搜索"
TextChanged="OnSearchTextChanged"
QuerySubmitted="OnSearchQuerySubmitted"
SuggestionChosen="OnSearchSuggestionChosen" />
</Grid>
<!-- 加载进度:不遮挡内容,只在标题下方显示一条细线 -->
<ProgressBar Grid.Row="2"
Height="2"
IsIndeterminate="True"
Visibility="{x:Bind Pane.IsLoading, Mode=OneWay, Converter={StaticResource BoolToVisibility}}" />
<!-- ═══ 内容区(左:导航窗格 / 右:文件列表) ═══ -->
<Grid Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="SidebarColumn" Width="242" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid x:Name="SidebarHost" Grid.Column="0" Padding="4,0,4,4">
<TreeView x:Name="SidebarTree"
ItemsSource="{x:Bind Main.SidebarRoots, Mode=OneWay}"
SelectionMode="Single"
ItemInvoked="OnSidebarItemInvoked"
Expanding="OnSidebarExpanding"
CanDragItems="False"
CanReorderItems="False">
<TreeView.ItemTemplate>
<DataTemplate x:DataType="vm:SidebarNode">
<TreeViewItem ItemsSource="{x:Bind Children}"
IsExpanded="{x:Bind IsExpanded, Mode=TwoWay}"
ToolTipService.ToolTip="{x:Bind Location.Path}">
<StackPanel Orientation="Horizontal" Spacing="10">
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
Glyph="{x:Bind Glyph}"
FontSize="14" />
<TextBlock Text="{x:Bind DisplayName}" TextTrimming="CharacterEllipsis" />
</StackPanel>
</TreeViewItem>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
<!-- 文件列表所在层用系统"图层填充",工具栏/地址栏/导航窗格保持 Mica 透出(对齐资源管理器的层次感) -->
<Grid Grid.Column="1" Background="{ThemeResource LayerFillColorDefaultBrush}">
<!-- 文件夹内容 -->
<Grid Visibility="{x:Bind Pane.IsSearchActive, Mode=OneWay, Converter={StaticResource BoolToVisibility}, ConverterParameter=invert}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<InfoBar Grid.Row="0"
Margin="8,4"
Severity="Error"
IsOpen="{x:Bind Pane.HasError, Mode=OneWay}"
Message="{x:Bind Pane.ErrorMessage, Mode=OneWay}"
CloseButtonClick="OnDismissErrorClick" />
<!-- 详情视图列头 -->
<Grid Grid.Row="1"
Height="28"
Padding="12,0"
ColumnSpacing="8"
Visibility="{x:Bind Pane.IsDetailsView, Mode=OneWay, Converter={StaticResource BoolToVisibility}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="160" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="96" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Style="{StaticResource ColumnHeaderButtonStyle}" Content="名称" Tag="Name" Click="OnSortClick" />
<Button Grid.Column="1" Style="{StaticResource ColumnHeaderButtonStyle}" Content="修改日期" Tag="DateModified" Click="OnSortClick" />
<Button Grid.Column="2" Style="{StaticResource ColumnHeaderButtonStyle}" Content="类型" Tag="Type" Click="OnSortClick" />
<Button Grid.Column="3" Style="{StaticResource ColumnHeaderButtonStyle}" Content="大小" Tag="Size" Click="OnSortClick"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Right" />
</Grid>
<!-- 详细信息 / 列表 -->
<ListView x:Name="DetailsList"
Grid.Row="2"
Padding="0,0,0,8"
SelectionMode="Extended"
ItemsSource="{x:Bind Pane.Items, Mode=OneWay}"
SelectionChanged="OnListSelectionChanged"
ContainerContentChanging="OnDetailsContainerChanging"
DoubleTapped="OnItemDoubleTapped"
KeyDown="OnListKeyDown"
ContextRequested="OnContextRequested"
AllowDrop="True"
CanDragItems="True"
DragItemsStarting="OnDragItemsStarting"
DragOver="OnDragOver"
Drop="OnDrop"
Visibility="{x:Bind Pane.IsDetailsView, Mode=OneWay, Converter={StaticResource BoolToVisibility}}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:ExplorerItem">
<Grid Height="30" Padding="0,0,8,0" ColumnSpacing="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="160" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="96" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" ColumnSpacing="8">
<Grid.ColumnDefinitions>
<!-- 固定 28px 预留给复选框:勾选/取消勾选时文件名不会左右跳动(对齐资源管理器) -->
<ColumnDefinition Width="28" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0"
MinWidth="0"
Margin="4,0,0,0"
HorizontalAlignment="Center"
IsChecked="{x:Bind IsSelected, Mode=TwoWay}"
Visibility="{x:Bind ShowCheckBox, Mode=OneWay, Converter={StaticResource BoolToVisibility}}" />
<Image Grid.Column="1"
Width="16"
Height="16"
Source="{x:Bind Icon, Mode=OneWay}" />
<Grid Grid.Column="2">
<TextBlock VerticalAlignment="Center"
TextTrimming="CharacterEllipsis"
Text="{x:Bind DisplayName, Mode=OneWay}"
Visibility="{x:Bind IsRenaming, Mode=OneWay, Converter={StaticResource BoolToVisibility}, ConverterParameter=invert}" />
<TextBox Tag="rename"
MinWidth="180"
Padding="4,0"
VerticalAlignment="Center"
Text="{x:Bind RenameText, Mode=TwoWay}"
Visibility="{x:Bind IsRenaming, Mode=OneWay, Converter={StaticResource BoolToVisibility}}"
KeyDown="OnRenameBoxKeyDown"
LostFocus="OnRenameBoxLostFocus" />
</Grid>
</Grid>
<TextBlock Grid.Column="1" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind ModifiedText, Mode=OneWay}" />
<TextBlock Grid.Column="2" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind TypeText}" />
<TextBlock Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Right"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind SizeText}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<!-- 图标 / 网格视图 -->
<GridView x:Name="IconsGrid"
Grid.Row="2"
Padding="12,8,12,12"
SelectionMode="Extended"
ItemsSource="{x:Bind Pane.Items, Mode=OneWay}"
SelectionChanged="OnListSelectionChanged"
ContainerContentChanging="OnIconsContainerChanging"
DoubleTapped="OnItemDoubleTapped"
KeyDown="OnListKeyDown"
ContextRequested="OnContextRequested"
AllowDrop="True"
CanDragItems="True"
DragItemsStarting="OnDragItemsStarting"
DragOver="OnDragOver"
Drop="OnDrop"
Visibility="{x:Bind Pane.IsIconsView, Mode=OneWay, Converter={StaticResource BoolToVisibility}}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="models:ExplorerItem">
<Grid Padding="4" CornerRadius="4">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Spacing="6">
<Image Width="{x:Bind IconSize, Mode=OneWay}"
Height="{x:Bind IconSize, Mode=OneWay}"
HorizontalAlignment="Center"
Source="{x:Bind Icon, Mode=OneWay}" />
<TextBlock Text="{x:Bind DisplayName, Mode=OneWay}"
TextWrapping="Wrap"
MaxLines="2"
TextAlignment="Center"
TextTrimming="CharacterEllipsis"
Visibility="{x:Bind IsRenaming, Mode=OneWay, Converter={StaticResource BoolToVisibility}, ConverterParameter=invert}" />
<TextBox Tag="rename"
MinWidth="120"
TextAlignment="Center"
Text="{x:Bind RenameText, Mode=TwoWay}"
Visibility="{x:Bind IsRenaming, Mode=OneWay, Converter={StaticResource BoolToVisibility}}"
KeyDown="OnRenameBoxKeyDown"
LostFocus="OnRenameBoxLostFocus" />
</StackPanel>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<!-- 空文件夹 / 提示 -->
<TextBlock Grid.Row="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="24"
TextAlignment="Center"
Style="{StaticResource PaneHintTextStyle}"
Text="{x:Bind Pane.EmptyMessage, Mode=OneWay}"
Visibility="{x:Bind Pane.EmptyMessage, Mode=OneWay, Converter={StaticResource StringToVisibility}}" />
</Grid>
<!-- 搜索结果 -->
<Grid Visibility="{x:Bind Pane.IsSearchActive, Mode=OneWay, Converter={StaticResource BoolToVisibility}}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Margin="12,8" Spacing="4">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind Pane.SearchStatusText, Mode=OneWay}" />
<ProgressBar IsIndeterminate="True"
Height="2"
Visibility="{x:Bind Pane.IsSearching, Mode=OneWay, Converter={StaticResource BoolToVisibility}}" />
</StackPanel>
<InfoBar Grid.Row="1"
Margin="8,0,8,4"
Severity="Informational"
IsOpen="{x:Bind Pane.HasNote, Mode=OneWay}"
Message="{x:Bind Pane.NoteMessage, Mode=OneWay}" />
<ListView Grid.Row="2"
Padding="0,0,0,8"
SelectionMode="Extended"
ItemsSource="{x:Bind Pane.SearchResults, Mode=OneWay}"
ContainerContentChanging="OnSearchContainerChanging"
DoubleTapped="OnSearchResultDoubleTapped"
ContextRequested="OnSearchResultContextRequested">
<ListView.ItemTemplate>
<DataTemplate x:DataType="vm:SearchResultItem">
<Grid Height="30" Padding="12,0" ColumnSpacing="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="160" />
<ColumnDefinition Width="*" MinWidth="180" />
<ColumnDefinition Width="140" />
<ColumnDefinition Width="96" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" ColumnSpacing="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Width="16" Height="16" Source="{x:Bind Icon, Mode=OneWay}" />
<TextBlock Grid.Column="1" VerticalAlignment="Center" TextTrimming="CharacterEllipsis" Text="{x:Bind Name}" />
</Grid>
<TextBlock Grid.Column="1" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="{x:Bind Directory}" />
<TextBlock Grid.Column="2" VerticalAlignment="Center"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="{x:Bind ModifiedText}" />
<TextBlock Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Right"
Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="{x:Bind SizeText}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Grid>
</Grid>
<!-- ═══ 状态栏 ═══ -->
<Grid Grid.Row="4" Height="26" Padding="12,0" ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Style="{StaticResource StatusBarTextStyle}"
TextTrimming="CharacterEllipsis"
Text="{x:Bind Pane.StatusText, Mode=OneWay}" />
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8">
<TextBlock x:Name="IndexChip"
Style="{StaticResource StatusBarTextStyle}"
Text="{x:Bind Main.IndexSummary, Mode=OneWay}"
ToolTipService.ToolTip="点击建立/重建文件索引(Everything 级搜索的前提)"
Tapped="OnIndexChipTapped" />
<Button Style="{StaticResource ToolbarButtonStyle}" Width="28" Height="22"
ToolTipService.ToolTip="显示隐藏的项目" Click="OnToggleHiddenClick">
<FontIcon Glyph="{StaticResource GlyphHidden}" FontSize="12" />
</Button>
<Button Style="{StaticResource ToolbarButtonStyle}" Width="28" Height="22"
ToolTipService.ToolTip="切换视图方式" Click="OnCycleViewClick">
<FontIcon Glyph="{StaticResource GlyphView}" FontSize="12" />
</Button>
</StackPanel>
<Button Grid.Column="2"
Style="{StaticResource ToolbarButtonStyle}"
Height="22"
Width="Auto"
Padding="8,0"
ToolTipService.ToolTip="文件操作队列"
Click="OnOpenQueueClick">
<StackPanel Orientation="Horizontal" Spacing="6">
<FontIcon Glyph="{StaticResource GlyphQueue}" FontSize="12" />
<TextBlock Style="{StaticResource StatusBarTextStyle}" Text="{x:Bind Main.ActiveJobCount, Mode=OneWay}" />
</StackPanel>
</Button>
</Grid>
</Grid>
</UserControl>