Initial commit: FluidExplorer:从零实现的 WinUI 3 文件资源管理器替代品(Mica、命令栏、面包屑)
This commit is contained in:
@@ -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="" 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>
|
||||
Reference in New Issue
Block a user