xaml问题,使用纯文本进行打开文件操作报错
检查项
- [X] 我已在 Issues 页面 和 常见&难检反馈及问题列表 中搜索,确认了这一 Bug 未被提交过。
描述
在按钮代码下重现没有出现问题,文本套用之后点击将出现如下报错:
重现步骤
1.点击文字弹出普通错误信息 使用到的主页代码:
<local:MyCard Title="标题" Margin="0,0,0,15"> <StackPanel Margin="0,12,0,10"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" > <local:MyButton Margin="0,4,0,10" Width="200" Height="35" Text="打开 PCL 日志" EventType="打开文件" EventData="Log1.txt" ToolTip="PCL 的日志文件就在 PCL 文件夹内,且名为 Log1.txt" /> <local:MyTextButton Margin="5,0,0,0 " FontSize="24" Text="打开 PCL 日志" EventType="打开文件" HorizontalAlignment="Center" EventData="Log1.txt" ToolTip="文件位于pcl内" /> </StackPanel> </StackPanel> </local:MyCard>
日志与附件
字面意思,就是不存在,日志在程序主体同路径下的 PCL 文件夹内,并不是与 PCL 在同一个文件夹,才导致的找不到
不过你为啥要插个 U+202A(从左至右嵌入)?
字面意思,就是不存在,日志在程序主体同路径下的
PCL文件夹内,并不是与 PCL 在同一个文件夹,才导致的找不到
这不是路径问题,我添加了可以执行的按键作为参考,对照组已经附带,关于这部分是可以省略的并且成功打开的,它并不是一个路径问题,相关操作步骤log1当中也有记录,当然,它可以被忽略
~~就是路径问题好吗?更换 EventData 为 PCL\Log1.txt 后顺利解决~~
你文件名中夹了个 Unicode 控制字符
就是路径问题好吗?更换EventData 即可
PCL\Log1.txt顺利解决
显然你并没有试过,我甚至填写了完整路径
就是路径问题好吗?更换EventData 即可
PCL\Log1.txt顺利解决
不是你没事为啥插个换行进去?
过程
我的建议是要不我先翻翻文件再说... ~理论上完全相同效果的东西有差异这...?~结果: 在PCL内部文件路径/Plain Craft Luncher 2/Controls 中 命名为“MyButton”的分别有“MyButton.xaml”和“MyButton.vb” 而命名为“MyTextButton”在该路径中仅存在“MyTextButton.vb”文件 而并不存在 “MyTextButton.xaml”文件 ~以及两份vb文件本身差异也挺大的...~
截图
题外话—— ~难道这又是WPF的不支持特性...?~
MyTextButton 我这边是相对路径和绝对路径都不行
@LTCatt 来看下?
我在 VS Code 中编辑时,发现了一个 Unicode 控制字符 U+202A,可能是这个导致的,但不太确定 Author 粘贴时原样是不是就是这样
反正去掉之后刷新主页,点击文本,成功打开
@LTCatt
就很奇怪 我重写了代码的 EventData,发现 MyButton 和 MyTextButton 都不能用相对路径 但问题是程序是在这里启动的,那么操作路径也应该是这个目录,但 .\PCL\log1.txt 和 PCL\log1.txt 都是 Exception 难不成是系统问题?(Win 10 19H9 x86 专业工作站版本)
就很奇怪 我重写了代码的 EventData,发现 MyButton 和 MyTextButton 都不能用相对路径 但问题是程序是在这里启动的,那么操作路径也应该是这个目录,但 .\PCL\log1.txt 和 PCL\log1.txt 都是 Exception 难不成是系统问题?(Win 10 19H9 x86 专业工作站版本)
发上来文件
不对,这明明是在与程序同路径下的 PCL 文件夹中打开的……
不对,这明明是在与程序同路径下的
PCL文件夹中打开的……
我的问题基本解决了,感谢support,关于路径由于用不了完整路径我用了...\进行解决
那……关了?
在处理中的反馈…… 不动了吧
在处理中的反馈…… 不动了吧
问题是这没问题啊
这个问题。。。。可能专属于 x86_32
根据描述和collaborator的分析结果,推测是复制文件名时插入了莫名其妙的不可见unicode控制字符,导致出错的EventData值事实上并不是期望的“Log1.txt”而是“\u202ALog1.txt”。
可能的修复方案: 1.不修复,因为此功能Works as expected 2.读取EventData时忽略特定的unicode控制字符 3.对报错信息中的unicode控制字符进行转义,以便排查问题
@LTCatt 打扰一下过来看看?
我等到统一修 issue 的时候会来看的……
没啥问题,我加了个 log 以显示尝试打开的实际路径
