You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:08:20