当前位置:网站首页>win10 uwp 使用 Geometry resources 在 xaml
win10 uwp 使用 Geometry resources 在 xaml
2022-08-04 18:36:00 【林德熙】
经常会遇到在 xaml 使用矢量图,对于 svg 的矢量图,一般都可以拿出来写在 Path 的 Data ,所以可以写为资源,但是写出来的是字符串,如何绑定 Geometry 到字符串资源?
假如在资源写一个图片,看起来就是下面的代码
<Page.Resources>
<x:String x:Key="HomeIconGeometry">F1 M 24.0033,56.0078L 24.0033,38.0053L 22.0031,40.0056L 19.0027,35.0049L 38.0053,20.0028L 45.0063,25.5299L 45.0063,21.753L 49.0068,21.0029L 49.0068,28.6882L 57.008,35.0049L 54.0075,40.0056L 52.0073,38.0053L 52.0073,56.0078L 24.0033,56.0078 Z M 38.0053,26.9204L 27.0038,36.005L 27.0038,53.0074L 33.0046,53.0074L 33.0046,42.006L 43.006,42.006L 43.006,53.0074L 49.0068,53.0074L 49.0068,36.005L 38.0053,26.9204 Z</x:String>
</Page.Resources>
然后发现使用的是 string ,如果这时创建了一个用户控件,里面写了一个属性,请看代码
public Geometry IconData
{
get { return (Geometry)GetValue(IconDataProperty); }
set { SetValue(IconDataProperty, value); }
}
public static readonly DependencyProperty IconDataProperty =
DependencyProperty.Register(nameof(IconData), typeof(Geometry), typeof(Header), new PropertyMetadata(null);
界面直接使用代码
<local:Header x:Name="HeaderPanel" IconData="{StaticResource HomeIconGeometry}" />
就会在运行出现无法从string转换,但是如何把用户控件改为 Path ,就可以运行
那么如何在用户控件使用资源的字符串
可以使用绑定,如果无法转换,可以写一个转换
先创建一个转换类
public class GeometryConvert : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is string str)
{
var geometry = (Geometry) XamlReader.Load(
"<Geometry xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>"
+ str + "</Geometry>");
return geometry;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
然后在使用绑定的地方使用转换
<local:GeometryConvert x:Key="GeometryConvert"></local:GeometryConvert>
<local:Header x:Name="HeaderPanel" IconData="{Binding Source={StaticResource HomeIconGeometry},Converter={StaticResource GeometryConvert}}" />
可以看到,这个方法可以显示图片
所以,需要绑定字符串,可以使用这个方法。
有人说,绑定到字符串可以不使用转换,他可以做到,直接使用绑定,但是我暂时没法
边栏推荐
- 谁能解答?从mysql的binlog读取数据到kafka,但是数据类型有Insert,updata,
- dotnet core 输出调试信息到 DebugView 软件
- vantui 组件 van-field 路由切换时,字体样式混乱问题
- MMDetection 使用示例:从入门到出门
- 作业8.3 线程同步互斥机制条件变量
- Regardless of whether you are a public, professional or non-major class, I have been sorting out the learning route for a long time here, and the learning route I have summarized is not yet rolled up
- EasyCVR调用云端录像API接口返回错误且无录像文件生成,是什么原因?
- 用Excel绘制统计图
- Google AppSheet: 无需编程构建零代码应用
- 方法的重写
猜你喜欢
当项目中自动格式化插件Prettier和ESLint冲突报错时如何解决
How does the intelligent video surveillance platform EasyCVR use the interface to export iframe addresses in batches?
[Distributed Advanced] Let's fill in those pits in Redis distributed locks.
Flask framework implementations registered encryption, a Flask enterprise class learning 】 【
自己经常使用的三种调试:Pycharm、Vscode、pdb调试
”元宇宙“必须具备这些特点
图解LeetCode——899. 有序队列(难度:困难)
浅谈web网站架构演变过程
LVS+NAT 负载均衡群集,NAT模式部署
Flask框架实现注册加密功能详解【Flask企业课学习】
随机推荐
CIFAR发布《AI伦理的文化:研讨会报告》【附下载】
Google AppSheet: 无需编程构建零代码应用
离线同步odps到mysql 中文乱码是因为?mysql已是utf8mb4
CAN光纤转换器CAN光端机解决消防火灾报警
老电脑怎么重装系统win10
How can test engineers break through career bottlenecks?
斯坦福:未来的RGB LED可以贴在你的皮肤上
方法的重写
入选爱分析·银行数字化厂商全景报告,网易数帆助力金融数字化场景落地
阿里云技术专家秦隆:云上如何进行混沌工程?
npm配置国内镜像(淘宝镜像)
不论你是大众,科班和非科班,我这边整理很久,总结出的学习路线,还不快卷起来
margin 塌陷和重合的理解
使用.NET简单实现一个Redis的高性能克隆版(二)
动态数组底层是如何实现的
部署LVS-DR群集
开篇-开启全新的.NET现代应用开发体验
数据库SqlServer迁移PostgreSql实践
ERC721标准与加密猫
【CCIG 2022】视觉大模型论坛