Custom.xaml 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <!-- 这是 PCL 的主页自定义文件。你可以通过修改这个文件来自定义 PCL 主页:添加文本、打开网页、启动游戏,等等。
  2. 如果你倒腾这个文件把 PCL 玩炸了,把这个文件直接删除就行了。
  3. 下列内容均基于 WPF 框架。你可以在继续之前先尝试自学 XAML 与 WPF 的基础,这能让你更轻松地理解下列内容。
  4. 你也可以使用 Ctrl + F 快速查找。例如,若需要改变文本颜色,则搜索 “颜色” 即可。 -->
  5. <local:MyCard Title="纯文本" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  6. <StackPanel Margin="25,40,23,15">
  7. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  8. Text="每个 local:MyCard 代表一张卡片,你可以添加、删除格式类似的 MyCard 来添加多个卡片。每个 TextBlock 代表一段文本,你可以在 Text 属性中书写任何你想写的内容,也可以自行添加更多的 TextBlock。" />
  9. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4" FontSize="11"
  10. Text="你可以通过添加、删除属性修改样式,例如上一行的 FontSize 就会将字号改为 11 号。" />
  11. <TextBlock TextWrapping="Wrap" Margin="20,5,20,0" Foreground="#8C7721"
  12. Text="它还有许多可以调整的属性:上一行的 Margin 调整了边距,Foreground 则会让文字变色。" />
  13. </StackPanel>
  14. </local:MyCard>
  15. <local:MyCard Title="卡片、提示条" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  16. <StackPanel Margin="25,40,23,15">
  17. <local:MyHint Text="local:MyHint 代表提示条。" />
  18. <local:MyHint Margin="0,8,0,2" Theme="Blue"
  19. Text="将提示条的 Theme 属性改为 Blue、Yellow 或 Red 即可修改配色。&#xA;使用左边的那堆字符可以在任意地方手动换行,如果需要使用等号、引号等特殊字符,可以自行百度 XAML 转义字符。" />
  20. <TextBlock TextWrapping="Wrap" Margin="0,6,0,0"
  21. Text="卡片(local:MyCard)的 Title 属性决定了它的标题。&#xA;为卡片添加 CanSwap 属性让它可以被折叠,True 代表是,False 代表否。在此基础上,再使用 IsSwapped 属性调整它是否默认被折叠。" />
  22. </StackPanel>
  23. </local:MyCard>
  24. <local:MyCard Title="长宽属性、图片" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  25. <StackPanel Margin="25,40,23,15">
  26. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4" Width="320" HorizontalAlignment="Right"
  27. Text="任意项目都可以添加 Width 与 Height 属性来控制宽高。HorizontalAlignment 属性可以控制对齐:Center 代表居中,Right 代表居右,例如这段文本就被居右了。" />
  28. <TextBlock TextWrapping="Wrap" Margin="0,0,0,6"
  29. Text="local:MyImage 代表图片,你需要在它的 Source 属性中填写一个网址或文件路径,它会从该处获取图片并显示。通常需要使用 Height 限制它的高度。" />
  30. <local:MyImage Height="50" HorizontalAlignment="Center" Source="https://www.baidu.com/img/flexible/logo/pc/result.png" />
  31. </StackPanel>
  32. </local:MyCard>
  33. <local:MyCard Title="按钮" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  34. <StackPanel Margin="25,40,23,15">
  35. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  36. Text="添加 local:MyButton 即可新建一个按钮。你需要限定它的尺寸与位置,并通过 Padding 属性进一步控制它的内边距。" />
  37. <local:MyButton Margin="0,4,0,10" Height="35" HorizontalAlignment="Left" Padding="25,0,25,0"
  38. Text="这是一个按钮!一个按钮!" />
  39. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  40. Text="你可以修改 ColorType 属性来调整按钮配色:Highlight 代表当前主题色,Red 代表红色。ToolTip 属性还可以让你在鼠标悬浮在上面的时候显示提示文本。" />
  41. <local:MyButton Margin="0,4,0,10" Width="250" Height="35" ColorType="Highlight"
  42. Text="把鼠标停在这里别动……" ToolTip="……就能看到这句话!" />
  43. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  44. Text="local:MyTextButton 是没有边框的 “纯文本按钮”,其作用与 local:MyButton 一致。" />
  45. <local:MyTextButton Margin="0,8,0,10" HorizontalAlignment="Center"
  46. Text="一个精简版的文本按钮" />
  47. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  48. Text="按钮可以做到很多事,具体将在 “事件” 部分介绍。" />
  49. </StackPanel>
  50. </local:MyCard>
  51. <local:MyCard Title="自定义事件" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  52. <StackPanel Margin="25,40,23,15">
  53. <TextBlock TextWrapping="Wrap" Margin="0,0,0,10"
  54. Text="将按钮的 EventType 属性设为 打开网页,然后在 EventData 属性中写入网址,即可通过点击按钮打开网页。" />
  55. <local:MyButton Height="35" HorizontalAlignment="Left" Padding="20,0,20,0"
  56. Text="打开 Minecraft Wiki" EventType="打开网页" EventData="https://zh.minecraft.wiki/" />
  57. <TextBlock TextWrapping="Wrap" Margin="0,10,0,10"
  58. Text="或者将 EventType 属性改为 弹出窗口,然后在 EventData 属性中写入弹窗的标题与内容……" />
  59. <local:MyButton Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
  60. Text="显示一个弹窗" EventType="弹出窗口" EventData="这是标题|标题与内容以竖线间隔。\n你也可以直接在其中换行。" />
  61. <TextBlock TextWrapping="Wrap" Margin="0,10,0,0"
  62. Text="local:MyTextButton 同样可以设置 EventType 与 EventData 让它具有特定功能。" />
  63. <local:MyTextButton Margin="0,8,0,0" HorizontalAlignment="Center"
  64. Text="点击打开哔哩哔哩" EventType="打开网页" EventData="https://www.bilibili.com/" />
  65. <TextBlock TextWrapping="Wrap" Margin="0,30,0,0"
  66. Text="自定义事件的详细用法请参考下方的页面。" />
  67. <local:MyListItem Margin="-5,4,-5,5"
  68. EventType="打开帮助" EventData="个性化/自定义事件.json" />
  69. </StackPanel>
  70. </local:MyCard>
  71. <local:MyCard Title="替换标记" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  72. <StackPanel Margin="25,40,23,10">
  73. <local:MyListItem Margin="-5,0,-5,8"
  74. EventType="打开帮助" EventData="个性化/替换标记.json" />
  75. </StackPanel>
  76. </local:MyCard>
  77. <local:MyCard Title="进阶:高级自定义事件" Margin="0,0,0,15" CanSwap="True" IsSwapped="{variable:TutorialCardSwap:True}">
  78. <StackPanel Margin="25,40,23,10">
  79. <TextBlock TextWrapping="Wrap" Margin="0,0,0,10"
  80. Text="你可以让一个控件触发多个事件。下方的例子展示了连续触发多个事件搭配 {variable} 替换标记的效果。" />
  81. <local:MyButton Height="35" HorizontalAlignment="Left" Padding="20,0,20,0" Margin="0,0,0,10"
  82. Text="隐藏下方的百度 Logo" Visibility="{variable:TutorialVisibility1:Visible}">
  83. <local:CustomEventService.Events>
  84. <local:CustomEventCollection>
  85. <local:CustomEvent Type="修改变量" Data="TutorialVisibility1|Collapsed|-" />
  86. <local:CustomEvent Type="修改变量" Data="TutorialVisibility2|Visible|-" />
  87. <local:CustomEvent Type="修改变量" Data="TutorialCardSwap|False|-" />
  88. <local:CustomEvent Type="刷新页面" Data="-" />
  89. </local:CustomEventCollection>
  90. </local:CustomEventService.Events>
  91. </local:MyButton>
  92. <local:MyButton Height="35" HorizontalAlignment="Left" Padding="20,0,20,0" Margin="0,0,0,10"
  93. Text="再次显示 Logo 并折叠卡片" Visibility="{variable:TutorialVisibility2:Collapsed}">
  94. <local:CustomEventService.Events>
  95. <local:CustomEventCollection>
  96. <local:CustomEvent Type="修改变量" Data="TutorialVisibility1|Visible|-" />
  97. <local:CustomEvent Type="修改变量" Data="TutorialVisibility2|Collapsed|-" />
  98. <local:CustomEvent Type="修改变量" Data="TutorialCardSwap|True|-" />
  99. <local:CustomEvent Type="刷新页面" Data="-" />
  100. </local:CustomEventCollection>
  101. </local:CustomEventService.Events>
  102. </local:MyButton>
  103. <local:MyImage Height="50" HorizontalAlignment="Left" Margin="0,0,0,10" Visibility="{variable:TutorialVisibility1:Visible}"
  104. Source="https://www.baidu.com/img/flexible/logo/pc/result.png" />
  105. </StackPanel>
  106. </local:MyCard>
  107. <local:MyCard Title="横向布局" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  108. <StackPanel Margin="25,40,23,15">
  109. <TextBlock TextWrapping="Wrap" Margin="0,0,0,10"
  110. Text="你需要使用 StackPanel 在一行里塞下多个按钮。你可以仅在这个教学卡片的基础上稍作调整,来实现自己的按钮布局。" />
  111. <!-- 这是第一行 -->
  112. <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
  113. <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0" ColorType="Highlight"
  114. Text="打开 B 站" EventType="打开网页" EventData="https://www.bilibili.com/" />
  115. <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
  116. Text="进入 Hypixel" EventType="启动游戏" EventData="1.16.3|mc.hypixel.net" ToolTip="使用 Minecraft 1.16.3 进入 Hypixel" />
  117. <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
  118. Text="打开记事本" EventType="打开文件" EventData="notepad" />
  119. </StackPanel>
  120. <!-- 这是第二行 -->
  121. <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,0">
  122. <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0" ColorType="Red"
  123. Text="复制召唤命令" EventType="复制文本" EventData="/execute as @a at @s run summon Creeper ~ ~2 ~" ToolTip="这条 Minecraft 命令会在每个玩家头顶召唤一只苦力怕!" />
  124. <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
  125. Text="内存优化" EventType="内存优化" />
  126. <local:MyButton Margin="0,0,10,0" Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
  127. Text="下载百度的 Logo" EventType="下载文件" EventData="https://www.baidu.com/img/flexible/logo/pc/result.png" />
  128. </StackPanel>
  129. </StackPanel>
  130. </local:MyCard>
  131. <local:MyCard Title="列表项 1:基础" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  132. <StackPanel Margin="25,40,23,15">
  133. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  134. Text="你也可以使用列表项 “local:MyListItem” 来替代按钮,其使用方式与按钮类似。" />
  135. <local:MyListItem Margin="-5,2,-5,8"
  136. Logo="https://www.baidu.com/favicon.ico" Title="百度" Info="百度一下,你就知道!"
  137. EventType="打开网页" EventData="https://www.baidu.com/" Type="Clickable" />
  138. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  139. Text="Logo 属性为列表项的图标,指定的可以是链接也可以是文件路径;Title 是大标题,Info 是可选的小标题(详细信息);Type 如果省略,该列表项则单纯只展示信息,仅当 Type 为 Clickable 才能触发点击效果。"/>
  140. <local:MyListItem Margin="-5,2,-5,8"
  141. Logo="pack://application:,,,/images/Blocks/Grass.png"
  142. EventType="打开帮助" EventData="帮助/自定义帮助.json" Type="Clickable" />
  143. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  144. Text="EventType、EventData 与按钮几乎一致。唯一不同的是,列表项不支持联网加载帮助文件。" />
  145. </StackPanel>
  146. </local:MyCard>
  147. <local:MyCard Title="列表项 2:内置图片" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  148. <StackPanel Margin="25,40,23,15">
  149. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  150. Text="PCL 内置了一些 Minecraft 方块与物品图片,可以直接使用。"/>
  151. <StackPanel Orientation="Horizontal" Margin="10,8,0,15" Height="30">
  152. <!-- 命令方块 -->
  153. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/CommandBlock.png"/>
  154. <!-- 圆石 -->
  155. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/Cobblestone.png"/>
  156. <!-- 金块 -->
  157. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/GoldBlock.png"/>
  158. <!-- 草方块 -->
  159. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/Grass.png"/>
  160. <!-- 土径 -->
  161. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/GrassPath.png"/>
  162. <!-- 铁砧 -->
  163. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/Anvil.png"/>
  164. <!-- 红石块 -->
  165. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/RedstoneBlock.png"/>
  166. <!-- 红石灯(亮) -->
  167. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/RedstoneLampOn.png"/>
  168. <!-- 红石灯(灭) -->
  169. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/RedstoneLampOff.png"/>
  170. <!-- 鸡蛋 -->
  171. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/Egg.png"/>
  172. <!-- 布料(Fabric 图标) -->
  173. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/Fabric.png"/>
  174. <!-- 狐狸(NeoForge 图标) -->
  175. <local:MyImage Width="30" Margin="5,0,0,0" Source="pack://application:,,,/images/Blocks/NeoForge.png"/>
  176. </StackPanel>
  177. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  178. Text="使用时,将上方对应行的 Source 复制到 MyListItem 的 Logo 属性处即可。"/>
  179. <local:MyListItem Margin="-5,0,-5,8"
  180. Logo="pack://application:,,,/images/Blocks/CommandBlock.png"
  181. Title="清理垃圾" Info="使用内置的命令方块图片作为 Logo" EventType="清理垃圾" Type="Clickable" />
  182. </StackPanel>
  183. </local:MyCard>
  184. <local:MyCard Title="主题色" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  185. <StackPanel Margin="25,40,23,15">
  186. <TextBlock TextWrapping="Wrap" Margin="0,0,0,15"
  187. Text="你可以用类似 {DynamicResource ColorBrush5} 的格式使用 PCL 当前的主题颜色,修改末尾的数字编号以改变颜色浓度。" />
  188. <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="8,4">
  189. <TextBlock TextWrapping="Wrap" Text=" 浓度 1 " Margin="5,0" Background="{DynamicResource ColorBrush1}" Foreground="#FFFFFF" />
  190. <TextBlock TextWrapping="Wrap" Text=" 浓度 2 " Margin="5,0" Background="{DynamicResource ColorBrush2}" Foreground="#FFFFFF" />
  191. <TextBlock TextWrapping="Wrap" Text=" 浓度 3 " Margin="5,0" Background="{DynamicResource ColorBrush3}" Foreground="#FFFFFF" />
  192. <TextBlock TextWrapping="Wrap" Text=" 浓度 4 " Margin="5,0" Background="{DynamicResource ColorBrush4}" Foreground="#FFFFFF" />
  193. </StackPanel>
  194. <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="8,4">
  195. <TextBlock TextWrapping="Wrap" Text=" 浓度 5 " Margin="5,0" Background="{DynamicResource ColorBrush5}" />
  196. <TextBlock TextWrapping="Wrap" Text=" 浓度 6 " Margin="5,0" Background="{DynamicResource ColorBrush6}" />
  197. <TextBlock TextWrapping="Wrap" Text=" 浓度 7 " Margin="5,0" Background="{DynamicResource ColorBrush7}" />
  198. <TextBlock TextWrapping="Wrap" Text=" 浓度 8 " Margin="5,0" Background="{DynamicResource ColorBrush8}" />
  199. </StackPanel>
  200. <TextBlock TextWrapping="Wrap" Margin="0,15,0,8" Foreground="{DynamicResource ColorBrush2}" Background="{DynamicResource ColorBrush6}"
  201. Text="除了字体颜色,你也可以将主题色用于背景色、边框颜色等颜色参数。例如这行字的颜色为浓度 2,背景为浓度 6。" />
  202. </StackPanel>
  203. </local:MyCard>
  204. <local:MyCard Title="进阶:Grid 布局" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  205. <StackPanel Margin="25,40,23,15">
  206. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  207. Text="如果要实现更复杂的布局,则必须使用 Grid。Grid 可以让按钮们自动适应窗口宽度:随意拉伸 PCL 窗口,按钮大小会自动改变。" />
  208. <TextBlock TextWrapping="Wrap" Margin="0,0,0,10"
  209. Text="你可以上网查找 “WPF Grid” 的相关教程,这里仅给出一个例子,不作详细介绍。你可以仅在这个教学卡片的基础上稍作调整,来实现自己的按钮布局。" />
  210. <Grid>
  211. <Grid.ColumnDefinitions>
  212. <ColumnDefinition Width="1*" />
  213. <ColumnDefinition Width="1.6*" MinWidth="200" /> <!-- 第二个按钮的宽度是第一个按钮的 1.6 倍,且至少为 200 -->
  214. <ColumnDefinition Width="150" /> <!-- 如果不打 *,则会占用固定的宽度,也可以写 Auto 来自适应 -->
  215. </Grid.ColumnDefinitions>
  216. <!-- 为按钮添加 Grid.Column 属性指定它所在的列,不要添加 Width 与 HorizontalAlignment 属性 -->
  217. <local:MyButton Grid.Column="0" Margin="0,0,10,0" Height="35" ColorType="Highlight"
  218. Text="打开 B 站" EventType="打开网页" EventData="https://www.bilibili.com/" />
  219. <local:MyButton Grid.Column="1" Margin="0,0,10,0" Height="35"
  220. Text="进入 Hypixel" EventType="启动游戏" EventData="1.16.3|mc.hypixel.net" ToolTip="使用 Minecraft 1.16.3 进入 Hypixel" />
  221. <local:MyButton Grid.Column="2" Margin="0,0,10,0" Height="35"
  222. Text="打开记事本" EventType="打开文件" EventData="notepad" />
  223. </Grid>
  224. </StackPanel>
  225. </local:MyCard>
  226. <local:MyCard Title="进阶:图标按钮" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  227. <StackPanel Margin="25,40,23,15">
  228. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  229. Text="MyIconTextButton 是一种带有自定义矢量图标的按钮变体,它同样支持 EventType 与 EventData 属性。&#xa;通过设置 Logo 属性来控制它的图标,设置 LogoScale 属性还可以调整图标的缩放比例。" />
  230. <local:MyIconTextButton Margin="0,4,0,8" Height="35" HorizontalAlignment="Center"
  231. Text="查看 SVG Path 简介" EventType="打开网页" EventData="https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial/Paths"
  232. LogoScale="1.02" Logo="M1091 0H78C35 0 0 35 0 78v863c0 43 35 78 78 78H1091c43 0 78-35 78-78V78C1170 35 1134 0 1091 0z m-8 87v78H87v-78h994zM87 933V254h994v679H87v0zM724 340l-206 547a43 43 0 0 1-82-31l206-547a43 43 0 0 1 82 30zM369 545l-85 85 85 85a43 43 0 0 1-62 62l-116-116a43 43 0 0 1 0-62l116-116a43 43 0 0 1 62 61z m610-37a43 43 0 0 1 0 62l-116 116a43 43 0 0 1-62 0 43 43 0 0 1 0-62l85-85-85-85a43 43 0 0 1 62-62l116 116z" />
  233. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  234. Text="Logo 属性的内容是 SVG Path 的值,你需要使用 SVG 编辑器或者从图标资源网站(如 IconFont)查找它。不要自己写,写不懂的。&#xa;此外,它还有两种 ColorType:Black(默认)和 Highlight。" />
  235. <local:MyIconTextButton Margin="0,4,0,8" Height="35" HorizontalAlignment="Center"
  236. ColorType="Highlight" Text="打开 IconFont" EventType="打开网页" EventData="https://www.iconfont.cn/"
  237. LogoScale="1" Logo="M510 959c-51-31-40-86-74-120-61-63-168-66-231-138C-5 457 196 3 593 70c231 39 407 363 250 592-67 98-198 106-277 213-23 23-11 81-55 83zM176 432c-9 176 240 167 240 9 0-80-72-145-166-111-66 23-71 49-74 101z m509 129c212 59 217-307 0-231-102 36-90 206 0 231z m-213 111c33 7 44-91 9-92-19 19-64 79-9 92z m83 0H575c23-37-8-87-46-92 3 37-11 92 27 92z" />
  238. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  239. Text="如果只想要图标,不要文字,还可以使用 MyIconButton。它不能设置 Text 属性,只有一个图标可以按。&#xa;它的 Theme 属性可以设置为 Color(默认)、White、Black、Red。" />
  240. <local:MyIconButton Margin="0,4,0,0" Width="25" Height="25" HorizontalAlignment="Center"
  241. Theme="Black" EventType="弹出窗口" EventData="事件|MyIconButton 当然也支持 EventType 和 EventData——要不然介绍它干啥?"
  242. LogoScale="1" Logo="M149 873c47 47 101 83 162 109 63 26 130 40 199 40 69 0 136-13 199-40 61-25 115-62 162-109s83-101 109-162c26-63 40-130 40-199 0-69-13-136-40-199-25-61-62-115-109-162-46-46-101-83-162-109C648 13 580 0 511 0s-136 13-199 40c-61 25-115 62-162 109s-83 101-109 162C13 375 0 442 0 511s13 136 40 199c25 61 62 115 109 162zM97 511c0-228 185-414 414-414 228 0 414 185 414 414S740 926 511 926c-228 0-414-185-414-414z M539 244c-8-4-17-7-27-7-9 0-19 2-27 7-16 9-27 27-27 47 0 30 24 54 54 54 30 0 54-24 54-54 0-19-10-37-27-47zM566 732v-284c0-30-24-54-54-54-30 0-54 24-54 54v284c0 30 24 54 54 54 30 0 54-24 54-54z" />
  243. <TextBlock TextWrapping="Wrap" Margin="0,0,0,4"
  244. Text="如果只想显示一个图标,不想让它是能按的按钮,可以使用 WPF 自带的 Path 等绘图控件,感兴趣的话可以自行搜索。想偷懒也可以把 MyIconButton 的 IsHitTestVisible 属性改为 False……" />
  245. <Path Margin="0,4,0,0" Width="20" Height="20" HorizontalAlignment="Center"
  246. Stretch="Uniform" Fill="{DynamicResource ColorBrush1}"
  247. Data="M149 873c47 47 101 83 162 109 63 26 130 40 199 40 69 0 136-13 199-40 61-25 115-62 162-109s83-101 109-162c26-63 40-130 40-199 0-69-13-136-40-199-25-61-62-115-109-162-46-46-101-83-162-109C648 13 580 0 511 0s-136 13-199 40c-61 25-115 62-162 109s-83 101-109 162C13 375 0 442 0 511s13 136 40 199c25 61 62 115 109 162zM97 511c0-228 185-414 414-414 228 0 414 185 414 414S740 926 511 926c-228 0-414-185-414-414z M539 244c-8-4-17-7-27-7-9 0-19 2-27 7-16 9-27 27-27 47 0 30 24 54 54 54 30 0 54-24 54-54 0-19-10-37-27-47zM566 732v-284c0-30-24-54-54-54-30 0-54 24-54 54v284c0 30 24 54 54 54 30 0 54-24 54-54z" />
  248. </StackPanel>
  249. </local:MyCard>
  250. <local:MyCard Title="进阶:联网主页" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
  251. <StackPanel Margin="25,40,23,15">
  252. <TextBlock TextWrapping="Wrap" Margin="0,0,0,10"
  253. Text="如果你在尝试制作联网更新的主页,可以查看下方的 GitHub 讨论页。&#xa;你可以根据其中的介绍为主页添加版本号检查以节省流量,也可以通过检查 Referer 和 User Agent 来确定对方的 PCL 版本。" />
  254. <local:MyButton Margin="0,0,0,8" Height="35" HorizontalAlignment="Center" Padding="20,0,20,0"
  255. Text="打开 GitHub 讨论页" EventType="打开网页" EventData="https://github.com/Meloong-Git/PCL/discussions/2528" />
  256. </StackPanel>
  257. </local:MyCard>
  258. <!--
  259. 全部通用的属性:
  260. - Width、Height:设置宽度与高度
  261. - ToolTip:设置鼠标指向时的提示文本
  262. - Margin:调整外边距(格式为 左,上,右,下。例如 Margin="0,0,0,2" 即为 2 单位的下边距)
  263. - HorizontalAlignment:设置横向对齐方式;居左:Left、居中:Center、居右:Right、拉伸(默认):Stretch
  264. - VerticalAlignment:设置纵向对齐方式;居上:Top、居中:Center、居下:Bottom、拉伸(默认):Stretch
  265. - IsHitTestVisible:该控件是否响应交互(点击、指向动画等);True 为是(默认),False 为否
  266. TextBlock(纯文本):
  267. - Text:设置显示的文本(如果要使用引号等特殊字符,自行百度 XAML 转义)
  268. - TextWrapping:开启自动换行
  269. - FontSize:设置字号
  270. - FontWeight:设置为 Bold 时,文字加粗
  271. - Foreground:调整前景颜色(十六进制字符串,例如 #FF010203 代表 ARGB 中的 255,1,2,3。前两位代表不透明度,FF 为全不透明,00 为全透明)
  272. local:MyImage(图片):
  273. - Source:要显示的图片的网址,或 PCL 内置图片位置
  274. - FallbackSource:当 Source 首次下载失败时,会从该备用地址加载图片
  275. - LoadingSource:正在下载网络图片时显示的本地图片(不支持联网下载);默认为 pack://application:,,,/images/Icons/NoIcon.png
  276. - EnableCache:若图片是联网获取的,是否将图片保存到本地缓存,在 7 天内不再重新下载;True 为是(默认),False 为否
  277. local:MyCard(卡片):
  278. - Title:设置显示的标题文本
  279. - CanSwap:卡片是否可以折叠,True 为是,False 为否
  280. - IsSwapped:卡片是否默认折叠,要求 CanSwap 必须为 True
  281. - HorizontalAlignment:若使用,要求 CanSwap 必须为 False
  282. - UseAnimation:是否在展开等高度改变时触发动画;True 为是(默认),False 为否
  283. - SwapLogoRight:卡片折叠时的箭头是朝下还是朝右;True 为朝右,False 为朝下(默认)
  284. - HasMouseAnimation:是否在鼠标指向时改变卡片颜色;True 为是(默认),False 为否
  285. local:MyHint(提示条):
  286. - Text:设置显示的文本(&#xA; 代表换行)
  287. - Theme:设置颜色主题(Blue、Yellow 或 Red)
  288. local:MyButton(按钮):
  289. - Text:设置显示的文本
  290. - Padding:设置内边距,格式与 Margin 一致
  291. - ColorType:设置颜色主题(Highlight 为当前启动器的主题颜色,Red 为红色,默认为黑色)
  292. - EventType、EventData:触发特定事件
  293. local:MyTextButton(文本按钮):
  294. - Text:设置显示的文本
  295. - EventType、EventData:触发特定事件
  296. local:MyListItem(列表项):
  297. - Logo:列表项的图标(所指定的可以是链接也可以是文件路径)
  298. - Title:列表项的大标题
  299. - Info:列表项的详细信息,它将会以灰色显示在大标题下方
  300. - Type:若留空仅单纯展示信息,设置为 Clickable 触发相应活动
  301. local:MyIconTextButton(带图标的按钮):
  302. - Text:设置显示的文本
  303. - Logo:设置显示的图标
  304. - LogoScale:设置图标的缩放,默认为 1
  305. - ColorType:设置颜色主题(Highlight 为当前启动器的主题颜色,默认为黑色)
  306. - EventType、EventData:触发特定事件
  307. local:MyIconButton(图标按钮):
  308. - Logo:设置显示的图标
  309. - LogoScale:设置图标的缩放,默认为 1
  310. - Theme:设置颜色主题,Color(默认)为当前启动器的主题颜色,也可设置为 White、Black、Red
  311. - EventType、EventData:触发特定事件
  312. 默认会声明以下命名空间:
  313. - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  314. - xmlns:sys="clr-namespace:System;assembly=mscorlib"
  315. - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  316. - xmlns:local="clr-namespace:PCL;assembly=Plain Craft Launcher 2"
  317. 除此之外,不能声明其他命名空间。
  318. -->