【问题标题】:Exception with type System:CharSystem:Char 类型的异常
【发布时间】:2011-04-20 21:28:09
【问题描述】:

我正在尝试在我的 xaml 资源中创建一个可重复使用的 System:Char 值。

我有:

xmlns:s="clr-namespace:System;assembly=mscorlib"

然后:

<s:Char x:Key="MaskPromptChar">#</s:Char>

我得到一个例外:

The type 'Char' was not found. [Line: 8 Position: 44]

但是……我也有:

<s:Double x:Key="DefaultControlWidth">200</s:Double>

还有……

<s:String x:Key="ApplicationTitle">My Title</s:String>

StringDouble 都可以正常工作。

想法??

【问题讨论】:

    标签: c# silverlight xaml app.xaml


    【解决方案1】:

    此代码在 Silverlight 和 WPF 中都适用于我。

    <UserControl.Resources>
    <sys:Double x:Key='myDouble'>4</sys:Double>
    <sys:Char  x:Key='myChar'>#</sys:Char>
    </UserControl.Resources>
    <StackPanel x:Name="LayoutRoot">
      <PasswordBox Password='aaa'
                   PasswordChar='$' />
      <PasswordBox Password='aaa'
                   PasswordChar='{StaticResource myChar}' />
    </StackPanel>
    

    您试图将 char 分配给什么属性?

    【讨论】:

    • 我将其分配给第 3 方控件的属性。目前,我现在没有将它分配给任何东西,只是在 xaml 中定义它。在运行时它会抱怨The type 'Char' was not found. [Line: 8 Position: 44]
    • 您是否在项目中命名了任何类型,名为 Char?这可能会导致名称冲突。
    • 不,我没有在任何地方命名任何类型 Char。
    • 此时我不知道该说什么。 XAML 在我的计算机上工作,但在你的计算机上失败。
    【解决方案2】:

    我的猜测是Char is a structure,而不是一个对象,而你真正看到的是一个表示 Unicode 的 16 位整数值的装箱。我倾向于将 XAML 视为 objects 的专门化序列化,如果 Char 实际上是 struct,则此模型可能会崩溃。

    您可能要考虑硬着头皮使用长度为 1 的字符串。

    更新:我同意 gmcalab 的坚实推理,并在此基础上使用命名空间到 mscorlib 和相应的字符资源进行了实验。 它成功了。 (我们现在是在研究命名空间或库冲突问题吗?)

    【讨论】:

    • 我尝试使用长度为 1 的 string,但是当我使用密钥时,它不会将类型 string 转换为类型 char。即PromptChar='{StaticResource MyStringLengthOfOne}' 给了我一个例外Object of type 'System.String' cannot be converted to type 'System.Char'.
    • 我只是建议使用 My Title 示例并在整个应用程序中将其保留为字符串。不过,也许不适合您的掩蔽案例。
    • @Walt,是的,我知道这就是您的建议,但控制属性需要 char,因此使用长度为 1 的 string 将不起作用,因此我的异常以前的评论。
    • @Walt,响应您的更新...什么有效?您没有提供任何代码向我们展示。
    • 您的 &lt;sys:Char x:Key='myChar'&gt;#&lt;/sys:Char&gt; 示例在我的 XMAL 文件中运行良好。我只是做了你所做的。
    猜你喜欢
    • 2012-02-06
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2021-01-17
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多