如何在 XAML 中声明十进制值?
我可以在 xaml 中声明整数或双精度值。但是,我无法添加小数值。它构建正常,但后来我得到:
System.Windows.Markup.XamlParseException:类型“Decimal”不是 找到了。
这是 xaml 代码:
<UserControl.Resources>
<system:Int32 x:Key="AnIntValue">1000</system:Int32><!--Works!-->
<system:Double x:Key="ADoubleValue">1000.0</system:Double><!--Works!-->
<system:Decimal x:Key="ADecimalValue">1000.0</system:Decimal><!--Fails at runtime-->
</UserControl.Resources>
这是我声明系统命名空间的方式:
xmlns:system="clr-namespace:System;assembly=mscorlib"
编辑:解决方法: 正如史蒂文提到的,通过代码隐藏添加资源似乎工作正常:
Resources.Add("ADecimalValue", new Decimal(1000.0));
编辑:答案: 在 WPF 中执行完全相同的操作似乎效果很好。所以我猜这是一个隐藏的 silverlight 限制。感谢史蒂文的这一发现。
I'm able to declare an integer or double value in xaml. However, I can't add a decimal value. It builds ok, but then I get:
System.Windows.Markup.XamlParseException: The type 'Decimal' was not
found.
Here's the xaml code:
<UserControl.Resources>
<system:Int32 x:Key="AnIntValue">1000</system:Int32><!--Works!-->
<system:Double x:Key="ADoubleValue">1000.0</system:Double><!--Works!-->
<system:Decimal x:Key="ADecimalValue">1000.0</system:Decimal><!--Fails at runtime-->
</UserControl.Resources>
Here's how I'm declaring the system namespace:
xmlns:system="clr-namespace:System;assembly=mscorlib"
Edit: Workaround:
As Steven mentioned, adding the resource through code-behind seems to work fine:
Resources.Add("ADecimalValue", new Decimal(1000.0));
Edit: Answer:
Doing exactly the same thing in WPF seems to work fine. So I guess this is a hidden silverlight restriction. Thanks to Steven for this finding.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经确认您的发现,即 Decimal 类型似乎不能作为 UserControl 的资源部分中的静态资源工作。不过,我确实看到了 StackOverflow 上讨论过的几个解决方法,并且我刚刚亲自验证了它们可以在 Silverlight 中使用 Decimal 类型: 访问 XAML 中的代码隐藏变量
解决方法包括:
第二种解决方法可以这样完成:
...根用户控件标记的定义如下(这个想法也来自上面的链接):
这位于用户控件的代码隐藏中:
I have confirmed your finding that the Decimal type does not appear to work as a static resource in a UserControl's resources section. I do however see a couple workarounds that have been discussed here on StackOverflow, and that i have just personally verified to work with the Decimal type in Silverlight: Access codebehind variable in XAML
The workarounds include:
The second workaround can be done like this:
...where the root usercontrol tag is defined like this (this idea is from the link above also):
and this is in your user control's code-behind: