Xamarin Forms:XAML转C#——ResourceDictionary中OnPlatform与转换器转换咨询
将XAML中的ResourceDictionary转换为C#代码:OnPlatform与Converter的处理方法
我来帮你搞定这两个转换问题,其实用C#代码构建这些资源并不复杂,咱们一步步来:
一、转换<OnPlatform>资源
在C#中,我们可以直接实例化OnPlatform<T>类(这里T是string),然后通过On属性添加各个平台的配置项。直接看代码示例:
// 先创建ResourceDictionary实例 var resourceDict = new ResourceDictionary(); // 构建OnPlatform<string>对象 var volosIconFont = new OnPlatform<string> { On = { new On<string> { Platform = Device.iOS, Value = "VolosIconFont" }, new On<string> { Platform = Device.Android, Value = "Fonts/VolosIconFont.ttf#VolosIconFont" }, new On<string> { Platform = Device.UWP | Device.WinPhone, Value = "Assets/Fonts/VolosIconFont.ttf#VolosIconFont" } } }; // 将对象添加到资源字典,指定Key resourceDict.Add("VolosIconFont", volosIconFont);
这里要注意:
- 多平台(UWP和WinPhone)可以用
|运算符合并平台枚举值 - 确保已经引用了对应框架的命名空间:Xamarin.Forms用
using Xamarin.Forms;,MAUI用using Microsoft.Maui.Controls;
二、转换<core:SelectedItemChangedEventArgsConverter>资源
这个更简单,直接实例化你的转换器类,然后添加到资源字典即可:
// 实例化转换器(记得先引入core对应的命名空间) var selectedItemConverter = new SelectedItemChangedEventArgsConverter(); // 添加到资源字典,指定Key resourceDict.Add("SelectedItemChangedEventArgsConverter", selectedItemConverter);
需要注意的是,要确保SelectedItemChangedEventArgsConverter类的命名空间(也就是XAML里core:对应的命名空间)已经在C#文件中通过using引入,否则会找不到这个类。
内容的提问来源于stack exchange,提问作者Hikari
相关产品推荐
相关产品推荐

