MAUI应用中在XAML里定义整数的正确语法是什么?
问题
我正在尝试定义一个转换器,当输入值大于1时返回True。为此我使用了CommunityToolkit中的CompareConverter,代码如下:
<mct:CompareConverter x:Key="GreaterThanOneConverter" ComparisonOperator="Greater" TrueObject="True" FalseObject="False"> <mct:CompareConverter.ComparingValue> <x:Int32>1</x:Int32> </mct:CompareConverter.ComparingValue> </mct:CompareConverter>
但这段代码无法编译,报错信息为:
"No property, BindableProperty, or event found for "ComparingValue",
or mismatching type between value and property"
我想知道在XAML中定义值为1的整数的正确语法是什么?
注:我已通过将整数定义为静态资源再引用的方式实现,但这种方式较为繁琐,想了解是否有其他方法。
解决方案
核心问题是你误用了属性名:CompareConverter中用于指定对比值的属性是Value,而非ComparingValue。修正属性名后,有两种简洁方式直接在XAML中指定整数1:
属性语法直接赋值
XAML会自动将字符串"1"转换为Int32类型,写法最简洁:<mct:CompareConverter x:Key="GreaterThanOneConverter" ComparisonOperator="Greater" Value="1" TrueObject="True" FalseObject="False" />元素语法显式指定类型
如果需要明确声明类型(避免潜在的类型转换歧义),可以用元素语法:<mct:CompareConverter x:Key="GreaterThanOneConverter" ComparisonOperator="Greater" TrueObject="True" FalseObject="False"> <mct:CompareConverter.Value> <x:Int32>1</x:Int32> </mct:CompareConverter.Value> </mct:CompareConverter>
这两种方式都能正常编译并实现需求,无需依赖静态资源。
内容的提问来源于stack exchange,提问作者Toto
相关产品推荐
相关产品推荐

