AnnotationListItem.xaml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. <UserControl
  2. x:Class="PDF_Master.Views.BOTA.AnnotationListItem"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:bota="clr-namespace:PDF_Master.ViewModels.BOTA"
  6. xmlns:convert="clr-namespace:PDF_Master.DataConvert"
  7. xmlns:customControl="clr-namespace:PDF_Master.CustomControl"
  8. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  9. xmlns:helper="clr-namespace:PDF_Master.Helper"
  10. xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
  11. xmlns:local="clr-namespace:PDF_Master.Views.BOTA"
  12. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  13. xmlns:property="clr-namespace:PDF_Master.Properties"
  14. d:DesignHeight="450"
  15. d:DesignWidth="800"
  16. mc:Ignorable="d">
  17. <!--
  18. xmlns:prism="http://prismlibrary.com/"
  19. prism:ViewModelLocator.AutoWireViewModel="True"
  20. d:DataContext="{d:DesignInstance Type=bota:AnnotationListItemViewModel}"
  21. -->
  22. <UserControl.Resources>
  23. <ResourceDictionary>
  24. <ResourceDictionary.MergedDictionaries>
  25. <!--<ResourceDictionary Source="../Resources/Style/OtherControlStyle.xaml" />-->
  26. </ResourceDictionary.MergedDictionaries>
  27. <SolidColorBrush x:Key="path.fill" Color="#273C62" />
  28. <convert:StringToDateConvert x:Key="StringToDateConvert" />
  29. <convert:StringToVisibleConvert x:Key="StringToVisibleConvert" />
  30. </ResourceDictionary>
  31. </UserControl.Resources>
  32. <Grid>
  33. <Grid.RowDefinitions>
  34. <RowDefinition Height="auto" />
  35. <RowDefinition />
  36. </Grid.RowDefinitions>
  37. <Grid Grid.Row="0" DataContext="{Binding}">
  38. <Grid.RowDefinitions>
  39. <RowDefinition />
  40. <RowDefinition />
  41. <RowDefinition />
  42. </Grid.RowDefinitions>
  43. <Grid>
  44. <Grid.ColumnDefinitions>
  45. <ColumnDefinition Width="30" />
  46. <ColumnDefinition Width="95*" />
  47. </Grid.ColumnDefinitions>
  48. <Grid
  49. Name="GridIco"
  50. Grid.Column="0"
  51. DataContext="{Binding}"
  52. DataContextChanged="GridIco_DataContextChanged">
  53. <!-- 高亮字体 -->
  54. <Grid
  55. x:Name="BtnHighlight"
  56. HorizontalAlignment="Left"
  57. VerticalAlignment="Top"
  58. Tag="HighLight"
  59. Visibility="Hidden">
  60. <Grid>
  61. <!--<Border
  62. x:Name="PathHighlight"
  63. Width="20"
  64. Height="20"
  65. BorderThickness="1"
  66. CornerRadius="3"
  67. Opacity="1">
  68. <Path
  69. Margin="4.85,4.29,0,0"
  70. Data="M0.845703 8.75H3.10156L3.62305 6.89258H6.38281L6.9043 8.75H9.16016L6.31836 0.294922H3.6875L0.845703 8.75ZM4.94727 2.1582H5.05859L5.94922 5.3457H4.05664L4.94727 2.1582Z"
  71. Fill="#273C62" />
  72. </Border>-->
  73. <Border
  74. x:Name="PathHighlight"
  75. Width="20"
  76. Height="20"
  77. BorderThickness="1"
  78. CornerRadius="3"
  79. Opacity="1">
  80. <Path
  81. Margin="-5,-5,0,0"
  82. Data="M7.5 7H20.5C20.7761 7 21 7.22386 21 7.5V20.5C21 20.7761 20.7761 21 20.5 21H7.5C7.22386 21 7 20.7761 7 20.5V7.5C7 7.22386 7.22386 7 7.5 7ZM5 7.5C5 6.11929 6.11929 5 7.5 5H20.5C21.8807 5 23 6.11929 23 7.5V20.5C23 21.8807 21.8807 23 20.5 23H7.5C6.11929 23 5 21.8807 5 20.5V7.5ZM12.1015 17.75H9.84564L12.6874 9.29492H15.3183L18.1601 17.75H15.9042L15.3828 15.8926H12.623L12.1015 17.75ZM14.0585 11.1582H13.9472L13.0566 14.3457H14.9492L14.0585 11.1582Z"
  83. Fill="#273C62" />
  84. </Border>
  85. </Grid>
  86. </Grid>
  87. <!-- 手绘 -->
  88. <Grid
  89. x:Name="BtnFreeHand"
  90. HorizontalAlignment="Left"
  91. VerticalAlignment="Top"
  92. Tag="Freehand"
  93. Visibility="Hidden">
  94. <Grid>
  95. <Image
  96. Width="18"
  97. Height="18"
  98. Source="pack://application:,,,/Resources/BOTA/Annotation/FreeHande.png"
  99. Stretch="UniformToFill" />
  100. <Path
  101. Name="PathFreehand"
  102. VerticalAlignment="Bottom"
  103. Data="M2.57674716,4.1756938 L2,2.77872077 L3.23629157,2.32666213 L4.39858152,1.91423694 L5.48803594,1.54159101 L6.17445055,1.31533198 L6.8293576,1.10686063 L7.4531026,0.916220157 L8.04603105,0.743453759 L8.60848847,0.58860464 L9.14082038,0.451716002 L9.64337227,0.332831046 C9.72466845,0.314519594 9.80473819,0.296960095 9.88358869,0.280153449 L10.3421184,0.188355018 L10.7717319,0.114668273 C12.0867553,-0.0899506488 12.9720275,-0.0214898126 13.4769206,0.326224086 C13.7931843,0.544031104 14.0243062,0.794201523 14.1654835,1.08081708 C14.4150998,1.58758343 14.372095,1.98890858 14.1388295,2.56637317 L14.0118481,2.8607497 L14.1178229,2.85487846 C14.3317937,2.83763034 14.6024395,2.79427307 14.9260381,2.72394503 L15.1265218,2.67850482 L15.3515733,2.6235355 L15.8394138,2.49284637 C15.9249062,2.46876007 16.0124891,2.44352166 16.1021588,2.41713154 L16.665189,2.24497377 L17.2781263,2.04519508 L17.9407955,1.81781534 L18.653021,1.56285442 L19.4146274,1.28033219 L20,2.67408238 L18.9461796,3.06389046 L18.2946269,3.29587476 L17.6827717,3.50537002 L17.1096728,3.69222298 C16.9249947,3.75071655 16.7466192,3.80541085 16.5743893,3.85628035 L16.07598,3.99738887 C15.9158848,4.0405832 15.7617783,4.07992718 15.6135039,4.11539526 L15.1860199,4.21014624 C14.0234985,4.44551743 13.271008,4.39900906 12.8322254,4.05493276 C12.4563321,3.76017178 12.3000774,3.35823485 12.3526752,2.92564423 C12.3673344,2.80507968 12.3854738,2.71608905 12.4219387,2.60716366 L12.4922357,2.42238589 L12.6817642,1.97507903 L12.7254854,1.84483042 C12.7439032,1.77588453 12.7424284,1.73934924 12.7304594,1.71505002 C12.7102358,1.67399262 12.6563117,1.61562419 12.5457193,1.53946054 C12.4359989,1.46389742 12.2053386,1.43735078 11.8597168,1.46056818 L11.6123366,1.4834271 C11.5682899,1.48846839 11.5228403,1.49412611 11.4759961,1.50040128 L11.1782601,1.54546983 L10.8474456,1.60540634 L10.4839463,1.68026003 L10.0881558,1.77008011 C10.0195217,1.78630005 9.9495585,1.80314565 9.87827444,1.82061792 L9.43478535,1.93297989 L8.95998926,2.0604313 L8.4542798,2.20302138 L7.6386142,2.44539918 L6.75560787,2.72211586 L5.8065894,3.03333754 L4.7928874,3.37923034 L4.08180686,3.62916931 L3.34296223,3.89464073 L2.57674716,4.1756938 Z"
  104. Fill="Black" />
  105. </Grid>
  106. </Grid>
  107. <!-- 波浪线 -->
  108. <Grid
  109. Name="AnnotSquiggly"
  110. Height="20"
  111. Visibility="Hidden">
  112. <Image
  113. Width="18"
  114. Height="18"
  115. Source="pack://application:,,,/Resources/BOTA/Annotation/Highlight.png"
  116. Stretch="UniformToFill" />
  117. <Path
  118. Name="AnnotSquigglycolor"
  119. VerticalAlignment="Bottom"
  120. Data="M0,1.5 L1.12734157,0.82359506 C1.95251203,0.32849278 2.99856537,0.398852295 3.75,1 C4.48079387,1.5846351 5.51920613,1.5846351 6.25,1 C6.98079387,0.415364901 8.01920613,0.415364901 8.75,1 C9.48079387,1.5846351 10.5192061,1.5846351 11.25,1 C11.9807939,0.415364901 13.0192061,0.415364901 13.75,1 C14.4807939,1.5846351 15.5192061,1.5846351 16.25,1 C17.0014346,0.398852295 18.047488,0.32849278 18.8726584,0.82359506 L20,1.5 L20,1.5 L20,3 L18.8726584,2.32359506 C18.047488,1.82849278 17.0014346,1.89885229 16.25,2.5 C15.5192061,3.0846351 14.4807939,3.0846351 13.75,2.5 C13.0192061,1.9153649 11.9807939,1.9153649 11.25,2.5 C10.5192061,3.0846351 9.48079387,3.0846351 8.75,2.5 C8.01920613,1.9153649 6.98079387,1.9153649 6.25,2.5 C5.51920613,3.0846351 4.48079387,3.0846351 3.75,2.5 C2.99856537,1.89885229 1.95251203,1.82849278 1.12734157,2.32359506 L0,3 L0,3 L0,1.5 Z"
  121. Fill="Black" />
  122. </Grid>
  123. <!-- 便签 -->
  124. <Grid
  125. x:Name="BtnAnnotSticky"
  126. HorizontalAlignment="Left"
  127. VerticalAlignment="Top"
  128. Visibility="Hidden">
  129. <Path
  130. Name="PathSticky"
  131. Width="18"
  132. Height="18"
  133. Data="M18,3 L18,15 L10,15 L5,18 L5,15 L2,15 L2,3 L18,3 Z M15,9.5 L5,9.5 L5,11 L15,11 L15,9.5 Z M11,6 L5,6 L5,7.5 L11,7.5 L11,6 Z"
  134. Fill="{StaticResource path.fill}" />
  135. </Grid>
  136. <!-- 图章 -->
  137. <Grid
  138. x:Name="BtnAnnotStamp"
  139. HorizontalAlignment="Left"
  140. VerticalAlignment="Top"
  141. Visibility="Hidden">
  142. <Path
  143. Name="PathStamp"
  144. Width="18"
  145. Height="18"
  146. Data="M14.4,12.8 L14.4,14 L1.6,14 L1.6,12.8 L14.4,12.8 Z M14.4,10 L14.4,11.2 L1.6,11.2 L1.6,10 L14.4,10 Z M8,2 C9.7673112,2 11.2,3.4326888 11.2,5.2 C11.2,6.3887762 10.5517747,7.42615125 9.58951117,7.97793796 L9.6,7.96 C9.33333333,8.32 9.2,8.66666667 9.2,9 C9.2,9.33333333 9.33333333,9.66666667 9.6,10 L6.4,10 C6.66666667,9.66666667 6.8,9.33333333 6.8,9 C6.8,8.67223253 6.67108218,8.33157328 6.41324655,7.97802224 C5.44867449,7.42686988 4.8,6.38918796 4.8,5.2 C4.8,3.4326888 6.2326888,2 8,2 Z"
  147. Fill="{StaticResource path.fill}" />
  148. </Grid>
  149. <!-- 线 -->
  150. <Grid
  151. x:Name="BtnSharpLine"
  152. HorizontalAlignment="Left"
  153. VerticalAlignment="Top"
  154. Visibility="Hidden">
  155. <Polygon
  156. x:Name="PathSharpLine"
  157. Width="20"
  158. Height="20"
  159. Fill="#273C62">
  160. <Polygon.Points>
  161. 13.1757359 1.97573593 14.0242641 2.82426407 2.82426407 14.0242641 1.97573593 13.1757359
  162. </Polygon.Points>
  163. </Polygon>
  164. </Grid>
  165. <!-- 箭头 -->
  166. <Grid
  167. x:Name="BtnSharpArrow"
  168. HorizontalAlignment="Left"
  169. VerticalAlignment="Top"
  170. Visibility="Hidden">
  171. <Path
  172. x:Name="PathArrow"
  173. Width="20"
  174. Height="20"
  175. Fill="#273C62">
  176. <Path.Data>
  177. M13.4,2.6 L13.4,8 L12.2,8 L12.1997359,4.648 L2.02426407,14.8242641 L1.17573593,13.9757359 L11.3517359,3.799 L8,3.8 L8,2.6 L13.4,2.6 Z
  178. </Path.Data>
  179. </Path>
  180. </Grid>
  181. <!-- 圆 -->
  182. <Grid
  183. x:Name="BtnAnnotCircle"
  184. HorizontalAlignment="Left"
  185. VerticalAlignment="Top"
  186. Visibility="Hidden">
  187. <Ellipse
  188. x:Name="EllipseCircle"
  189. Width="20"
  190. Height="20"
  191. StrokeThickness="1" />
  192. </Grid>
  193. <!-- 形状-矩形 -->
  194. <Grid
  195. x:Name="BtnAnnotSquare"
  196. HorizontalAlignment="Left"
  197. VerticalAlignment="Top"
  198. Visibility="Hidden">
  199. <!--<Path Name="RectAnnotSquare" Fill="{StaticResource path.fill}" Data="M18.75,3.25 L1.25,3.25 L1.25,16.75 L18.75,16.75 L18.75,3.25 Z M17.25,4.75 L17.25,15.25 L2.75,15.25 L2.75,4.75 L17.25,4.75 Z" />-->
  200. <Rectangle
  201. x:Name="RectAnnotSquare"
  202. Width="18"
  203. Height="16"
  204. HorizontalAlignment="Center"
  205. VerticalAlignment="Center"
  206. Stroke="#273C62"
  207. StrokeThickness="1" />
  208. </Grid>
  209. <!-- 链接 -->
  210. <Grid
  211. x:Name="BtnAnnotLink"
  212. HorizontalAlignment="Left"
  213. VerticalAlignment="Top"
  214. Visibility="Hidden">
  215. <Grid Width="20" Height="20">
  216. <Path Data="M10.1962 13.7315L7.74126 16.1865C6.65663 17.2712 4.8981 17.2712 3.81347 16.1865C2.72884 15.1019 2.72884 13.3434 3.81347 12.2587L6.26846 9.80376L4.85424 8.38954L2.39926 10.8445C0.53358 12.7102 0.533581 15.7351 2.39926 17.6007C4.26494 19.4664 7.2898 19.4664 9.15547 17.6007L11.6105 15.1458L10.1962 13.7315ZM13.7318 10.196L15.146 11.6102L17.6007 9.15547C19.4664 7.2898 19.4664 4.26494 17.6007 2.39926C15.7351 0.533581 12.7102 0.53358 10.8445 2.39926L8.38978 4.85401L9.80399 6.26822L12.2587 3.81347C13.3434 2.72884 15.1019 2.72884 16.1865 3.81347C17.2712 4.8981 17.2712 6.65663 16.1865 7.74126L13.7318 10.196Z" Fill="#273C62" />
  217. <Path Data="M6.29289 12.2925L12.293 6.29286L13.7071 7.70713L7.70705 13.7067L6.29289 12.2925Z" Fill="#94989C" />
  218. </Grid>
  219. </Grid>
  220. <!-- 文本注释 -->
  221. <Grid
  222. x:Name="BtnAnnotFreeText"
  223. HorizontalAlignment="Left"
  224. VerticalAlignment="Top"
  225. Visibility="Hidden">
  226. <Path
  227. Name="FreeTextPath"
  228. Data="M16.75,2.75 L16.75,6 L15.25,6 L15.25,4.25 L10.75,4.25 L10.75,16.25 L12.3333333,16.25 L12.3333333,17.75 L7.66666667,17.75 L7.66666667,16.25 L9.25,16.25 L9.25,4.25 L4.75,4.25 L4.75,6 L3.25,6 L3.25,2.75 L16.75,2.75 Z"
  229. Fill="{StaticResource path.fill}" />
  230. </Grid>
  231. <!-- 删除线 -->
  232. <Grid
  233. x:Name="BtnAnnotStrikeout"
  234. HorizontalAlignment="Left"
  235. VerticalAlignment="Top"
  236. Visibility="Hidden">
  237. <Grid Width="20" Height="20">
  238. <Path
  239. Name="StrikeoutPath"
  240. Data="M5.23047 18H2.47656L4.46236 12.5H15.5376L17.5234 18H14.7578L13.2344 13.4297H6.76562L5.23047 18ZM14.9359 10.8333L11.418 1.08984H8.58203L5.06411 10.8333H7.63134L9.89453 4.05469H10.0938L12.3679 10.8333H14.9359Z"
  241. Fill="#273C62" />
  242. <Rectangle
  243. x:Name="PathStrikeoutyColor"
  244. Grid.Row="1"
  245. Width="20"
  246. Height="2"
  247. Margin="0,5,0,0"
  248. Fill="#FF8200CC"
  249. Opacity="1" />
  250. </Grid>
  251. </Grid>
  252. <!-- 下划线 -->
  253. <Grid
  254. x:Name="BtnUnderLine"
  255. HorizontalAlignment="Left"
  256. VerticalAlignment="Top"
  257. Tag="UnderLine"
  258. Visibility="Hidden">
  259. <Grid Width="20" Height="20">
  260. <Grid.RowDefinitions>
  261. <RowDefinition Height="Auto" />
  262. <RowDefinition />
  263. </Grid.RowDefinitions>
  264. <Path
  265. Name="UnderlinePath"
  266. Data="M3.41699 16H5.82666L7.16992 12.001H12.8301L14.1631 16H16.583L11.2407 1.20361H8.75928L3.41699 16ZM9.90771 3.79785H10.082L12.2148 10.1553H7.78516L9.90771 3.79785Z"
  267. Fill="#273C62" />
  268. <Rectangle
  269. Name="RectangleUnderline"
  270. Grid.Row="1"
  271. Width="18"
  272. Height="2"
  273. Margin="0,1,0,0"
  274. Fill="#FF8200CC"
  275. Opacity="1" />
  276. <!--<Path Data="M3.41699 16H5.82666L7.16992 12.001H12.8301L14.1631 16H16.583L11.2407 1.20361H8.75928L3.41699 16ZM9.90771 3.79785H10.082L12.2148 10.1553H7.78516L9.90771 3.79785Z" Fill="#273C62" />
  277. <Rectangle
  278. Name="RectangleUnderline"
  279. Grid.Row="1"
  280. Width="18"
  281. Height="2"
  282. Margin="0,1,0,0"
  283. Fill="#FF8200CC"
  284. Opacity="1" />-->
  285. </Grid>
  286. </Grid>
  287. </Grid>
  288. <StackPanel
  289. Grid.Column="1"
  290. Margin="5,5,0,0"
  291. HorizontalAlignment="Right"
  292. Orientation="Horizontal">
  293. <TextBlock
  294. Name="txtAuthor"
  295. VerticalAlignment="Top"
  296. FontFamily="Segoe UI"
  297. FontSize="10"
  298. Foreground="#666666"
  299. Text="{Binding Author}"
  300. TextAlignment="Left" />
  301. <TextBlock
  302. Name="txtDate"
  303. Margin="5,0,0,0"
  304. HorizontalAlignment="Left"
  305. VerticalAlignment="Top"
  306. FontFamily="Segoe UI"
  307. FontSize="10"
  308. Foreground="#666666"
  309. Text="{Binding CreateTime, Converter={StaticResource StringToDateConvert}}"
  310. TextAlignment="Left"
  311. TextWrapping="Wrap" />
  312. </StackPanel>
  313. </Grid>
  314. <!-- 内容 -->
  315. <TextBlock
  316. Name="TxbContent"
  317. Grid.Row="1"
  318. Margin="5"
  319. FontFamily="Segoe UI"
  320. FontSize="14"
  321. Foreground="#252629"
  322. Text="{Binding Content}"
  323. TextAlignment="Left"
  324. TextTrimming="CharacterEllipsis"
  325. TextWrapping="Wrap"
  326. Visibility="{Binding ElementName=TxbContent, Path=Text, Converter={StaticResource StringToVisibleConvert}}" />
  327. <Image
  328. Name="ImageContext"
  329. Grid.Row="1"
  330. Source="{Binding WriteableBitmap}" />
  331. <StackPanel Grid.Row="2" Margin="0,2">
  332. <!-- 附注 -->
  333. <Border
  334. BorderBrush="{StaticResource color.sys.border.neutral.lv2}"
  335. BorderThickness="1"
  336. CornerRadius="4"
  337. Visibility="{Binding ElementName=TxbMarkupContent, Path=Text, Converter={StaticResource StringToVisibleConvert}}">
  338. <TextBlock
  339. Name="TxbMarkupContent"
  340. Margin="5"
  341. FontFamily="Segoe UI"
  342. FontSize="14"
  343. Foreground="{StaticResource color.sys.text.neutral.lv2}"
  344. Text="{Binding MarkupContent}"
  345. TextAlignment="Left"
  346. TextTrimming="CharacterEllipsis"
  347. TextWrapping="Wrap"
  348. Visibility="{Binding ElementName=TxbMarkupContent, Path=Text, Converter={StaticResource StringToVisibleConvert}}" />
  349. </Border>
  350. <!--<TextBox
  351. Name="TxTContent"
  352. Margin="5"
  353. FontFamily="Segoe UI"
  354. FontSize="14"
  355. Foreground="#616469"
  356. Text="{Binding Content}"
  357. TextAlignment="Left"
  358. TextWrapping="Wrap"
  359. Visibility="Collapsed" />-->
  360. </StackPanel>
  361. </Grid>
  362. <!--<Separator
  363. x:Name="MenuSeparator2"
  364. Grid.Row="1"
  365. Height="1"
  366. Margin="12,0,12,0"
  367. HorizontalAlignment="Stretch"
  368. VerticalAlignment="Bottom"
  369. BorderBrush="Transparent"
  370. BorderThickness="1"
  371. Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" />-->
  372. </Grid>
  373. </UserControl>