RecentFilesContent.xaml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. <UserControl
  2. x:Class="PDF_Office.Views.HomePanel.RecentFiles.RecentFilesContent"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:DataConvert="clr-namespace:PDF_Office.DataConvert"
  6. xmlns:customControl="clr-namespace:PDF_Office.CustomControl"
  7. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  8. xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
  9. xmlns:local="clr-namespace:PDF_Office.Views.HomePanel.RecentFiles"
  10. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  11. xmlns:prism="http://prismlibrary.com/"
  12. d:DesignHeight="450"
  13. d:DesignWidth="800"
  14. prism:ViewModelLocator.AutoWireViewModel="True"
  15. Loaded="UserControl_Loaded"
  16. mc:Ignorable="d">
  17. <UserControl.Resources>
  18. <ResourceDictionary>
  19. <ResourceDictionary.MergedDictionaries>
  20. <ResourceDictionary Source="../../../Styles/ListViewStyle.xaml" />
  21. <ResourceDictionary Source="../../../Styles/CustomBtnStyle.xaml" />
  22. <ResourceDictionary Source="../../../Styles/RadioButtonStyle.xaml" />
  23. <ResourceDictionary Source="../../../Styles/ButtonStyle.xaml" />
  24. </ResourceDictionary.MergedDictionaries>
  25. <DataConvert:BoolToVisible x:Key="BoolToVisible" />
  26. <DataConvert:InvertBoolToVisibleConvert x:Key="InvertBoolToVisibleConvert" />
  27. <DataConvert:InvertBoolConvert x:Key="InvertBoolConvert" />
  28. <DataTemplate x:Key="listviewItem">
  29. <local:DocItemListViewControl
  30. HorizontalAlignment="Stretch"
  31. DeleteItemHandler="DocItemListViewControl_DeleteItemHandler"
  32. OpenFileItemHandler="DocItemListViewControl_OpenFileItemHandler" />
  33. </DataTemplate>
  34. <DataTemplate x:Key="gridviewItem">
  35. <local:DocItemControl HorizontalAlignment="Stretch" />
  36. </DataTemplate>
  37. <ItemsPanelTemplate x:Key="listPanel">
  38. <StackPanel Orientation="Vertical" />
  39. </ItemsPanelTemplate>
  40. <ItemsPanelTemplate x:Key="gridPanel">
  41. <WrapPanel />
  42. </ItemsPanelTemplate>
  43. <ContextMenu
  44. x:Key="FlyoutMenu"
  45. FontSize="14"
  46. Opened="ContextMenu_Opened">
  47. <ContextMenu.ItemContainerStyle>
  48. <Style TargetType="MenuItem">
  49. <Setter Property="Padding" Value="0,7,0,7" />
  50. <Setter Property="VerticalContentAlignment" Value="Center" />
  51. </Style>
  52. </ContextMenu.ItemContainerStyle>
  53. <MenuItem
  54. Name="FilePathMenuItem"
  55. Click="FilePathMenuItem_Click"
  56. Header="打开文件路径"
  57. IsEnabled="True">
  58. <MenuItem.Icon>
  59. <Path Data="M5.24031 1.5H0.5V14.5H15.5V4H7.24031L5.24031 1.5ZM1.5 13.5V2.5H4.75969L6.75969 5H14.5V13.5H1.5ZM4 7.5H12V6.5H4V7.5Z" Fill="Black">
  60. <Path.RenderTransform>
  61. <TranslateTransform X="3.0000" Y="0" />
  62. </Path.RenderTransform>
  63. </Path>
  64. </MenuItem.Icon>
  65. </MenuItem>
  66. <MenuItem
  67. Name="DeleteMenuItem"
  68. Click="DeleteMenuItem_Click"
  69. Header="从最近列表删除"
  70. IsEnabled="True">
  71. <MenuItem.Icon>
  72. <Path Data="M9 0H3V2H0V3H1V14H11V3H12V2H9V0ZM2 13V3H3H4H8H9H10V13H2ZM8 2V1H4V2H8ZM4 12V4H3V12H4ZM6.5 4V12H5.5V4H6.5ZM9 12V4H8V12H9Z" Fill="Black">
  73. <Path.RenderTransform>
  74. <TranslateTransform X="5.0000" Y="0" />
  75. </Path.RenderTransform>
  76. </Path>
  77. </MenuItem.Icon>
  78. </MenuItem>
  79. </ContextMenu>
  80. <Style
  81. x:Key="SubFilesListViewItemStyle"
  82. BasedOn="{StaticResource FilesListViewItemStyle}"
  83. TargetType="{x:Type ListViewItem}">
  84. <Setter Property="ContextMenu" Value="{StaticResource FlyoutMenu}" />
  85. <Setter Property="HorizontalContentAlignment" Value="Center" />
  86. <Setter Property="Margin" Value="0,0,0,0" />
  87. <EventSetter Event="PreviewMouseRightButtonDown" Handler="ListViewItem_PreviewMouseRightButtonDown" />
  88. <EventSetter Event="PreviewMouseDoubleClick" Handler="RecentFilesList_PreviewMouseDoubleClick" />
  89. </Style>
  90. <Style
  91. x:Key="HomeGridViewItemStyle"
  92. BasedOn="{StaticResource FilesGridItemStyle}"
  93. TargetType="{x:Type ListViewItem}">
  94. <Setter Property="ContextMenu" Value="{StaticResource FlyoutMenu}" />
  95. <Setter Property="HorizontalContentAlignment" Value="Center" />
  96. <EventSetter Event="PreviewMouseRightButtonDown" Handler="ListViewItem_PreviewMouseRightButtonDown" />
  97. <EventSetter Event="PreviewMouseDoubleClick" Handler="RecentFilesList_PreviewMouseDoubleClick" />
  98. </Style>
  99. </ResourceDictionary>
  100. </UserControl.Resources>
  101. <Grid>
  102. <Grid>
  103. <Grid.RowDefinitions>
  104. <RowDefinition Height="Auto" />
  105. <RowDefinition Height="Auto" />
  106. <RowDefinition />
  107. </Grid.RowDefinitions>
  108. <Grid x:Name="GridRecentFilesTile" Margin="32,38,0,13">
  109. <TextBlock
  110. x:Name="TxbRecentlyTile"
  111. Margin="0,0,0,0"
  112. Padding="0,6,0,0"
  113. HorizontalAlignment="Left"
  114. FontFamily="Segoe UI"
  115. FontSize="20"
  116. FontWeight="Semibold"
  117. Text="Recent" />
  118. <StackPanel
  119. x:Name="PnlRightBtns"
  120. Grid.Column="0"
  121. Grid.ColumnSpan="2"
  122. Margin="0,0,0,0"
  123. HorizontalAlignment="Right"
  124. Orientation="Horizontal">
  125. <Border
  126. Height="32"
  127. Padding="2"
  128. Background="{StaticResource color.sys.layout.fg.dark}"
  129. CornerRadius="4">
  130. <StackPanel Orientation="Horizontal">
  131. <RadioButton
  132. x:Name="BtnGridMode"
  133. Width="32"
  134. Height="28"
  135. Padding="0"
  136. HorizontalContentAlignment="Center"
  137. VerticalContentAlignment="Center"
  138. GroupName="Mode"
  139. IsChecked="{Binding IsListMode, Converter={StaticResource InvertBoolConvert}, Mode=OneTime}"
  140. Style="{StaticResource ListModeRadioBtnStyle}"
  141. Tag="GridMode">
  142. <Path
  143. Width="32"
  144. Height="28"
  145. HorizontalAlignment="Center"
  146. VerticalAlignment="Center"
  147. Data="M10.8 7.25C9.94396 7.25 9.25 7.94396 9.25 8.8V12C9.25 12.856 9.94396 13.55 10.8 13.55H14C14.856 13.55 15.55 12.856 15.55 12V8.8C15.55 7.94396 14.856 7.25 14 7.25H10.8ZM10.75 8.8C10.75 8.77239 10.7724 8.75 10.8 8.75H14C14.0276 8.75 14.05 8.77239 14.05 8.8V12C14.05 12.0276 14.0276 12.05 14 12.05H10.8C10.7724 12.05 10.75 12.0276 10.75 12V8.8ZM10.8 14.45C9.94396 14.45 9.25 15.144 9.25 16V19.2C9.25 20.056 9.94396 20.75 10.8 20.75H14C14.856 20.75 15.55 20.056 15.55 19.2V16C15.55 15.144 14.856 14.45 14 14.45H10.8ZM10.75 16C10.75 15.9724 10.7724 15.95 10.8 15.95H14C14.0276 15.95 14.05 15.9724 14.05 16V19.2C14.05 19.2276 14.0276 19.25 14 19.25H10.8C10.7724 19.25 10.75 19.2276 10.75 19.2V16ZM16.45 8.8C16.45 7.94396 17.1439 7.25 18 7.25H21.2C22.056 7.25 22.75 7.94396 22.75 8.8V12C22.75 12.856 22.056 13.55 21.2 13.55H18C17.1439 13.55 16.45 12.856 16.45 12V8.8ZM18 8.75C17.9723 8.75 17.95 8.77239 17.95 8.8V12C17.95 12.0276 17.9723 12.05 18 12.05H21.2C21.2276 12.05 21.25 12.0276 21.25 12V8.8C21.25 8.77239 21.2276 8.75 21.2 8.75H18ZM18 14.45C17.1439 14.45 16.45 15.144 16.45 16V19.2C16.45 20.056 17.1439 20.75 18 20.75H21.2C22.056 20.75 22.75 20.056 22.75 19.2V16C22.75 15.144 22.056 14.45 21.2 14.45H18ZM17.95 16C17.95 15.9724 17.9723 15.95 18 15.95H21.2C21.2276 15.95 21.25 15.9724 21.25 16V19.2C21.25 19.2276 21.2276 19.25 21.2 19.25H18C17.9723 19.25 17.95 19.2276 17.95 19.2V16Z"
  148. Fill="{Binding ElementName=BtnGridMode, Path=Foreground}" />
  149. <i:Interaction.Triggers>
  150. <i:EventTrigger EventName="Checked">
  151. <i:InvokeCommandAction Command="{Binding ListModeCheckedCommand}" CommandParameter="{Binding ElementName=BtnGridMode, Path=Tag}" />
  152. </i:EventTrigger>
  153. </i:Interaction.Triggers>
  154. </RadioButton>
  155. <RadioButton
  156. x:Name="BtnListMode"
  157. Width="32"
  158. Height="28"
  159. Padding="0"
  160. HorizontalContentAlignment="Center"
  161. VerticalContentAlignment="Center"
  162. GroupName="Mode"
  163. IsChecked="{Binding IsListMode, Mode=OneTime}"
  164. Style="{StaticResource ListModeRadioBtnStyle}"
  165. Tag="ListMode">
  166. <Path
  167. Width="16"
  168. Height="16"
  169. Data="M15 3.75H1V2.25H15V3.75ZM15 8.75H1V7.25H15V8.75ZM1 13.75H15V12.25H1V13.75Z"
  170. Fill="{Binding ElementName=BtnListMode, Path=Foreground}" />
  171. <i:Interaction.Triggers>
  172. <i:EventTrigger EventName="Checked">
  173. <i:InvokeCommandAction Command="{Binding ListModeCheckedCommand}" CommandParameter="{Binding ElementName=BtnListMode, Path=Tag}" />
  174. </i:EventTrigger>
  175. </i:Interaction.Triggers>
  176. </RadioButton>
  177. </StackPanel>
  178. </Border>
  179. <Separator
  180. Width="1"
  181. Height="16"
  182. Margin="1,0,1,0"
  183. BorderBrush="#1A000000"
  184. BorderThickness="1" />
  185. <Button
  186. x:Name="BtnDelete"
  187. Width="32"
  188. Height="32"
  189. MaxHeight="40"
  190. Margin="16,0,0,0"
  191. Padding="0,0,0,0"
  192. Command="{Binding RemoveFilesFromContainerCommand}"
  193. CommandParameter="{Binding ElementName=RecentFilesList, Path=SelectedItems}"
  194. Foreground="#6B6F7D"
  195. IsEnabled="{Binding IsEmpty, Converter={StaticResource InvertBoolConvert}, Mode=OneWay}"
  196. Style="{StaticResource btn.sec}">
  197. <Path
  198. Width="32"
  199. Height="32"
  200. Data="M14 9.75H18V8.25H14V9.75ZM9 12.25H10.25V23C10.25 23.4142 10.5858 23.75 11 23.75H21C21.4142 23.75 21.75 23.4142 21.75 23V12.25H23V10.75H9V12.25ZM11.75 22.25V12.25H20.25V22.25H11.75ZM15.25 14.5V19.5H16.75V14.5H15.25Z"
  201. Fill="{Binding ElementName=BtnDelete, Path=Foreground}" />
  202. </Button>
  203. </StackPanel>
  204. </Grid>
  205. <Grid Grid.Row="2" Visibility="{Binding IsEmpty, Converter={StaticResource InvertBoolToVisibleConvert}}">
  206. <Grid.ColumnDefinitions>
  207. <ColumnDefinition Width="799*" />
  208. <ColumnDefinition Width="*" />
  209. </Grid.ColumnDefinitions>
  210. <Border Visibility="{Binding IsListMode, Converter={StaticResource BoolToVisible}}">
  211. <ListView
  212. x:Name="RecentFilesList"
  213. Grid.ColumnSpan="2"
  214. MinWidth="380"
  215. MinHeight="216"
  216. Margin="32,0,0,0"
  217. Padding="0,0,0,0"
  218. Background="Transparent"
  219. BorderThickness="0"
  220. ItemContainerStyle="{StaticResource SubFilesListViewItemStyle}"
  221. ItemTemplate="{StaticResource listviewItem}"
  222. ItemsPanel="{StaticResource listPanel}"
  223. ItemsSource="{Binding RecentFilesGroup}"
  224. ScrollViewer.HorizontalScrollBarVisibility="Disabled"
  225. ScrollViewer.VerticalScrollBarVisibility="Auto"
  226. SelectionMode="Extended"
  227. Style="{StaticResource FilesListViewStyle}"
  228. VirtualizingPanel.CacheLength="1"
  229. VirtualizingPanel.CacheLengthUnit="Page"
  230. VirtualizingPanel.IsVirtualizing="True"
  231. VirtualizingPanel.ScrollUnit="Pixel" />
  232. </Border>
  233. <ListView
  234. x:Name="GridRecentFilesList"
  235. Grid.ColumnSpan="2"
  236. MinWidth="380"
  237. MinHeight="216"
  238. Margin="32,0,0,0"
  239. Padding="0,0,0,0"
  240. Background="Transparent"
  241. BorderThickness="0"
  242. ItemContainerStyle="{StaticResource HomeGridViewItemStyle}"
  243. ItemTemplate="{StaticResource gridviewItem}"
  244. ItemsPanel="{StaticResource gridPanel}"
  245. ItemsSource="{Binding RecentFilesGroup}"
  246. ScrollViewer.HorizontalScrollBarVisibility="Disabled"
  247. ScrollViewer.VerticalScrollBarVisibility="Auto"
  248. SelectionMode="Extended"
  249. Style="{StaticResource FilesGridViewStyle}"
  250. VirtualizingPanel.CacheLength="1"
  251. VirtualizingPanel.CacheLengthUnit="Page"
  252. VirtualizingPanel.IsVirtualizing="True"
  253. VirtualizingPanel.ScrollUnit="Pixel"
  254. Visibility="{Binding IsListMode, Converter={StaticResource InvertBoolToVisibleConvert}}" />
  255. </Grid>
  256. <StackPanel
  257. x:Name="BlankContentPanel"
  258. Grid.Row="1"
  259. Grid.RowSpan="2"
  260. HorizontalAlignment="Center"
  261. VerticalAlignment="Center"
  262. Visibility="{Binding IsEmpty, Converter={StaticResource BoolToVisible}}">
  263. <Button
  264. x:Name="BtnAddFiles"
  265. Width="128"
  266. Height="128"
  267. MaxHeight="128"
  268. Background="Transparent"
  269. BorderThickness="0"
  270. Command="{Binding OpenFilesCommand}"
  271. Foreground="#6B6F7D"
  272. Style="{StaticResource OnlyContentBtn}">
  273. <Grid Width="128" Height="128">
  274. <Rectangle
  275. Width="90"
  276. Height="112"
  277. RadiusX="2"
  278. RadiusY="4"
  279. Stroke="{StaticResource color.icon.base.neutral.norm.lv2}"
  280. StrokeDashArray="6 6"
  281. StrokeThickness="2" />
  282. <Path Data="M62.3333 65.6667V79H65.6667V65.6667H79V62.3333H65.6667V49H62.3333V62.3333H49V65.6667H62.3333Z" Fill="{StaticResource color.icon.base.neutral.norm.lv2}" />
  283. <!--<Image
  284. Width="128"
  285. Height="128"
  286. VerticalAlignment="Center"
  287. Source="../../../Resources/HomeIcon/add.png"
  288. Stretch="Uniform" />-->
  289. </Grid>
  290. </Button>
  291. <TextBlock
  292. x:Name="NoFilesText"
  293. HorizontalAlignment="Center"
  294. FontFamily="Segoe UI"
  295. FontSize="16"
  296. Foreground="{StaticResource color.sys.text.neutral.lv2}"
  297. LineHeight="22"
  298. Text="No documents"
  299. TextAlignment="Center" />
  300. <StackPanel Margin="0,12,0,0" Orientation="Horizontal">
  301. <TextBlock
  302. x:Name="clickFileText"
  303. VerticalAlignment="Center"
  304. FontSize="14"
  305. Foreground="#FF999999"
  306. Text="Click to open the file or drag the file directly here to open the file." />
  307. </StackPanel>
  308. </StackPanel>
  309. </Grid>
  310. </Grid>
  311. </UserControl>