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

如何在UWP XAML中添加变量?添加String资源遇运行时错误

UWP XAML中正确添加变量及错误解决

错误原因

你遇到的ReflectionHelperException是因为UWP XAML的类型系统对System.String存在特殊映射逻辑,直接通过system:String声明资源会触发反射时的类型名称不匹配问题——创建的XAML类型标识为String,但系统请求的是完整命名空间的System.String。

正确解决方案

方案1:使用UWP内置的x:String简化声明(推荐)

直接利用页面根元素已引入的x命名空间声明字符串资源,无需额外引入system命名空间,代码更简洁且无兼容性问题:

<Page
    x:Class="UwpTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UwpTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Page.Resources>
        <!-- 替换system:String为x:String -->
        <x:String x:Key="var1">1.2</x:String>
    </Page.Resources>
    <Grid>

    </Grid>
</Page>

方案2:通过项目配置关闭类型信息反射

如果需要保留system:String的声明方式,可以按照错误提示修改项目的.csproj文件,添加以下配置节点:

<PropertyGroup>
    <EnableTypeInfoReflection>false</EnableTypeInfoReflection>
</PropertyGroup>

保存配置后重新编译项目,即可解决反射错误。

其他基本类型变量的声明示例

对于其他常用基本类型,同样可以使用x命名空间下的对应类型直接声明:

  • 整数类型:<x:Int32 x:Key="varInt">100</x:Int32>
  • 浮点类型:<x:Double x:Key="varDouble">3.14</x:Double>
  • 布尔类型:<x:Boolean x:Key="varBool">True</x:Boolean>

内容的提问来源于stack exchange,提问作者Syaiful Nizam Yahya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:54:28