Răsfoiți Sursa

新版自定义事件 & 替换标记

龙腾猫跃 1 an în urmă
părinte
comite
b9d7137e06
3 a modificat fișierele cu 55 adăugiri și 88 ștergeri
  1. 15 88
      个性化/XAML 格式.xaml
  2. 7 0
      个性化/替换标记.json
  3. 33 0
      个性化/替换标记.xaml

+ 15 - 88
个性化/XAML 格式.xaml

@@ -61,11 +61,11 @@
     </StackPanel>
 </local:MyCard>
 
-<local:MyCard Title="事件 1:打开网页、弹出窗口" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
+<local:MyCard Title="自定义事件" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
     <StackPanel Margin="25,40,23,15">
         <TextBlock Margin="0,0,0,10"
                     Text="将按钮的 EventType 属性设为 打开网页,然后在 EventData 属性中写入网址,即可通过点击按钮打开网页。" />
-        <local:MyButton Width="140" Height="35" HorizontalAlignment="Left" Padding="13,0,13,0"
+        <local:MyButton Height="35" HorizontalAlignment="Left" Padding="20,0,20,0"
                     Text="打开 Minecraft Wiki" EventType="打开网页" EventData="https://zh.minecraft.wiki/" />
         <TextBlock Margin="0,10,0,10"
                     Text="或者将 EventType 属性改为 弹出窗口,然后在 EventData 属性中写入弹窗的标题与内容……" />
@@ -74,86 +74,24 @@
         <TextBlock Margin="0,10,0,0"
                     Text="local:MyTextButton 同样可以设置 EventType 与 EventData 让它具有特定功能。" />
         <local:MyTextButton Margin="0,8,0,0" HorizontalAlignment="Center"
-                    Text="点击打开知乎" EventType="打开网页" EventData="https://www.zhihu.com/" />
-    </StackPanel>
-</local:MyCard>
-
-<local:MyCard Title="事件 2:启动游戏" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
-    <StackPanel Margin="25,40,23,15">
-        <TextBlock Margin="0,0,0,4"
-                    Text="将 EventType 设置为 启动游戏,EventData 设置为具体的游戏版本,即可通过点击按钮启动游戏。如果当前游戏文件夹没有该版本,则无法启动。" />
-        <local:MyButton Margin="0,4,0,10" Width="250" Height="35"
-                    Text="启动 Minecraft 1.12.2" EventType="启动游戏" EventData="1.12.2" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="在 EventData 后面添加一条竖线(|),竖线后填写服务器 IP,即可在启动该版本的同时自动进入服务器。" />
-        <local:MyButton Margin="0,4,0,0" Width="250" Height="35"
-                    Text="启动 1.20.1 并进入 Hypixel" EventType="启动游戏" EventData="1.20.1|mc.hypixel.net" ToolTip="服务器 IP:mc.hypixel.net" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="在 EventData 中填写 \current,表示启动当前被选中的游戏版本,同样可以在后面填写服务器 IP。" />
-        <local:MyButton Margin="0,4,0,10" Width="250" Height="35"
-                    Text="启动当前选中版本并进入 Hypixel" EventType="启动游戏" EventData="\current|mc.hypixel.net" ToolTip="启动当前版本" />
-    </StackPanel>
-</local:MyCard>
-
-<local:MyCard Title="事件 3:执行命令" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
-    <StackPanel Margin="25,40,23,15">
-        <TextBlock Margin="0,0,0,4"
-                    Text="将 EventType 设置为 执行命令(或 打开文件),EventData 设置为文件路径,即可点击打开特定文件或启动程序。" />
-        <local:MyButton Margin="0,4,0,8" Width="200" Height="35"
-                    Text="打开记事本" EventType="执行命令" EventData="notepad.exe" />
-        <TextBlock Margin="0,4,0,0"
-                    Text="如果能在 PCL 文件夹中找到该文件,则会优先打开 PCL 文件夹中的文件。当然,你可以使用例如 C:\ 开头的绝对路径。" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="此外,PCL 会将文件中的 “花括号 path” 替换为 PCL 可执行文件所在文件夹({path}),可以用于执行特定程序或加载图片。" />
-        <local:MyButton Margin="0,4,0,10" Width="200" Height="35"
-                    Text="打开 PCL 日志" EventType="执行命令" EventData="Log1.txt" ToolTip="PCL 的日志文件就在 PCL 文件夹内,且名为 Log1.txt" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="就像为游戏指定服务器 IP 一样,你也可以在 EventData 的竖线后为程序添加启动参数。" />
-        <local:MyButton Margin="0,4,0,0" Width="200" Height="35"
-                    Text="定位游戏启动脚本" EventType="执行命令" EventData="explorer.exe|/select,LatestLaunch.bat" ToolTip="PCL 会将上一次启动 MC 的脚本保存在 PCL 文件夹内,且名为 LatestLaunch.bat。&#xA;点击按钮会打开文件管理器,并且借助参数要求它选中这个文件。" />
+                    Text="点击打开哔哩哔哩" EventType="打开网页" EventData="https://www.bilibili.com/" />
+        <TextBlock Margin="0,30,0,0"
+                    Text="你也可以让一个控件触发多个事件。自定义事件的详细用法请参考下方的 Wiki。" />
+        <local:MyListItem Margin="-5,8,-5,5"
+            Title="自定义事件 - PCL Wiki" Info="点击查看自定义事件的完整列表与说明"
+            Logo="pack://application:,,,/images/Blocks/CommandBlock.png" Type="Clickable"
+		    EventType="打开网页" EventData="https://github.com/Meloong-Git/PCL/wiki/自定义事件" />
     </StackPanel>
 </local:MyCard>
 
-<local:MyCard Title="事件 4:其他事件类型" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
-    <StackPanel Margin="25,40,23,15">
-        <TextBlock Margin="0,4,0,6" FontWeight="Bold"
-                    Text="EventType 共有以下种类:" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="· 打开网页、启动游戏、打开文件:已在上方的卡片中介绍" />
-        <local:MyButton Margin="0,5,0,6" Width="250" Height="35"
-                    Text="查看 PCL 源代码" EventType="打开网页" EventData="https://github.com/Meloong-Git/PCL/blob/main/Plain%20Craft%20Launcher%202/FormMain.xaml.vb"/>
-        <TextBlock Margin="0,0,0,4"
-                    Text="· 今日人品、清理垃圾、内存优化、安装整合包:触发对应功能" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="· 复制文本:将 EventData 中的内容复制到剪贴板" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="· 刷新主页:点击重新加载主页。如果主页文件为联网更新,这会重新下载主页内容" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="· 下载文件:在点击时要求选择文件保存位置,并且下载 EventData 的链接中的文件&#xa;       EventData 中也能可选地指定文件名或目标文件夹,格式为:链接|文件名|文件夹" />
-        <local:MyButton Margin="0,5,0,6" Width="250" Height="35"
-                    Text="下载百度的 Logo" EventType="下载文件" EventData="https://www.baidu.com/img/flexible/logo/pc/result.png" />
-        <TextBlock Margin="0,4,0,4"
-                    Text="· 打开帮助:跳转到 EventData 对应的帮助文件(输入相对 Help 文件夹的路径)"/>
-        <local:MyButton Margin="0,5,0,6" Width="250" Height="35"
-                    Text="打开自定义帮助页面" EventType="打开帮助" EventData="帮助/自定义帮助.json"/>
-        <TextBlock Margin="0,4,0,4"
-                    Text="· 切换页面:强制切换到 PCL 的某一页面(尝试切换到不太对头的页面会出现不可预知的 Bug)&#xa;       EventData 为 页面种类|次要页面种类(PageType|PageSubType,例如 1|1)&#xa;       点击上方的 查看 PCL 源代码 按钮,在 1000 行左右的位置即可查找到对应数值"/>
-        <local:MyButton Margin="0,5,0,6" Width="250" Height="35"
-                    Text="切换到下载页面" EventType="切换页面" EventData="1|1"/>
-        <local:MyButton Margin="0,5,0,6" Width="250" Height="35"
-                    Text="切换到启动器设置" EventType="切换页面" EventData="3|2"/>
-        <TextBlock Margin="0,4,0,4"
-                    Text="· 下载版本:切换到 EventData 对应的 Minecraft 下载页面"/>
-        <local:MyButton Margin="0,5,0,6" Width="250" Height="35"
-                    Text="下载 Minecraft 1.12.2" EventType="下载版本" EventData="1.12.2"/>
-		<TextBlock Margin="0,4,0,4"
-                    Text="· 修改设置:将 PCL 的特定设置修改为特定值"/>
-		<local:MyButton Margin="0,5,0,6" Width="250" Height="35"
-                    Text="将窗口改为半透明" EventType="修改设置" EventData="UiLauncherTransparent|400"/>
+<local:MyCard Title="替换标记" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
+    <StackPanel Margin="25,40,23,10">
+        <local:MyListItem Margin="-5,0,-5,8"
+		                  EventType="打开帮助" EventData="个性化/替换标记.json" />
     </StackPanel>
 </local:MyCard>
 
-<local:MyCard Title="StackPanel 横向布局" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
+<local:MyCard Title="横向布局" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
     <StackPanel Margin="25,40,23,15">
         <TextBlock Margin="0,0,0,10"
                     Text="你需要使用 StackPanel 在一行里塞下多个按钮。你可以仅在这个教学卡片的基础上稍作调整,来实现自己的按钮布局。" />
@@ -191,7 +129,7 @@
                     Logo="pack://application:,,,/images/Blocks/Grass.png"
                     EventType="打开帮助" EventData="帮助/自定义帮助.json" Type="Clickable" />
         <TextBlock Margin="0,0,0,4"
-                    Text="EventType、EventData 与按钮几乎一致,唯一不同的是,列表项联网加载帮助文件时,必须手动设置 Title 与 Info 属性,否则会报错。" />
+                    Text="EventType、EventData 与按钮几乎一致。唯一不同的是,列表项联网加载帮助文件时,必须手动设置 Title、Info、Type、Logo 属性。" />
     </StackPanel>
 </local:MyCard>
 
@@ -254,17 +192,6 @@
     </StackPanel>
 </local:MyCard>
 
-<local:MyCard Title="替换标记" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
-    <StackPanel Margin="25,40,23,15">
-        <TextBlock Margin="0,0,0,4"
-                    Text="在花括号 {} 中写入特定内容,PCL 会在加载时对其进行替换。&#xa;例如,path 会被替换为 PCL 可执行文件所在文件夹({path}),用于在 EventData 中指定特定文件,或是加载图片。" />
-        <TextBlock Margin="0,0,0,4"
-                    Text="你也可以使用替换标记来获取随机内容:cave 会被替换为一条随机的回声洞内容,hint 则是 “你知道吗” 的内容。" />
-        <TextBlock Margin="10,6,0,5" Foreground="{DynamicResource ColorBrush3}"
-                    Text="你知道吗:{hint}" />
-    </StackPanel>
-</local:MyCard>
-
 <local:MyCard Title="进阶:Grid 布局" Margin="0,0,0,15" CanSwap="True" IsSwapped="True">
     <StackPanel Margin="25,40,23,15">
         <TextBlock Margin="0,0,0,4"

+ 7 - 0
个性化/替换标记.json

@@ -0,0 +1,7 @@
+{
+    "__Author__": "龙腾猫跃",
+	"Title": "替换标记",
+	"Description": "在部分设置、自定义主页和帮助中使用的 {} 替换标记的格式介绍",
+	"Keywords": "XAML",
+	"Types": ["个性化"]
+}

+ 33 - 0
个性化/替换标记.xaml

@@ -0,0 +1,33 @@
+
+<local:MyCard Title="简介">
+    <StackPanel Margin="25,40,23,11">
+	    <TextBlock Margin="0,0,0,4" LineHeight="17"
+                   Text="在部分设置、自定义主页和帮助中,可以使用类似 &#123;time} 的替换标记,它可以动态替换设置和文件中的某些部分。" />
+	</StackPanel>
+</local:MyCard>
+
+<local:MyCard Title="示例">
+    <StackPanel Margin="25,40,23,11">
+	    <TextBlock Margin="0,0,0,4" LineHeight="17"
+                   Text="例如,在 设置 → 启动选项 → 游戏窗口标题 中输入 “现在是 &#123;time}”,在启动游戏后就能在游戏窗口看到当前时间。" />
+	    <TextBlock Margin="0,15,0,4" LineHeight="17"
+                   Text="你也可以在 XAML 中直接使用替换标记,例如:" />
+	    <Label Margin="0,0,0,4" Padding="6" Background="{DynamicResource ColorBrush7}"
+                   Content="你在 &#123;date} &#123;time} 点进了这个帮助页,PCL 版本是 &#123;pcl_version}。" />
+	    <TextBlock Margin="0,0,0,4" LineHeight="17"
+                   Text="就会被自动替换为:" />
+	    <Label Margin="0,0,0,4" Padding="6" Background="{DynamicResource ColorBrush7}"
+                   Content="你在 {date} {time} 点进了这个帮助页,PCL 版本是 {pcl_version}。" />
+	</StackPanel>
+</local:MyCard>
+
+<local:MyCard Title="详情">
+    <StackPanel Margin="25,40,23,11">
+        <local:MyListItem Margin="-5,0,-5,8"
+            Title="替换标记 - PCL Wiki" Info="点击查看替换标记的完整列表与说明"
+            Logo="pack://application:,,,/images/Blocks/CommandBlock.png" Type="Clickable"
+		    EventType="打开网页" EventData="https://github.com/Meloong-Git/PCL/wiki/替换标记" />
+	</StackPanel>
+</local:MyCard>
+
+<local:MyHint Margin="0,0,0,15" Text="作者:龙腾猫跃" IsWarn="False" />