无法从WP7.1中的文本“#”创建“System.Char”

时间:2012-03-22 06:39:37

标签: windows-phone-7

我正在WP7.1中创建MaskedTextBox因为我想将Prompt char设置为'#'。

例如: ## - ## - #### ##:## 。运行此时,我收到一条错误消息

无法从文字'#'创建'System.Char'

请有人帮助我....

1 个答案:

答案 0 :(得分:2)

请发布有关您的例外的更多详细信息。 另外,请考虑使用带PasswordChar属性的标准PasswordBox:

<PasswordBox PasswordChar="#"/>

<强>更新

在PromptChar属性上使用此char转换器:

    public class CharTypeConverter : TypeConverter
    {
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
        {
            if (sourceType == typeof(string))
                return true;
            return base.CanConvertFrom(context, sourceType);
        }

        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
        {
            if (destinationType == typeof(string))
                return true;
            return base.CanConvertTo(context, destinationType);
        }

        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value == null)
                return '_';

            if (value is string)
            {
                string s = (string)value;
                if (s.Length == 0 || s.Length > 1)
                    return '_';
                return s[0];
            }

            return base.ConvertFrom(context, culture, value);
        }

        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (value != null && !(value is char))
                throw new ArgumentException("Invalid prompt character", "value");

            if (destinationType == typeof(string))
            {
                if (value == null)
                    return String.Empty;
                char promptChar = (char)value;
                return promptChar.ToString();
            }
            return base.ConvertTo(context, culture, value, destinationType);
        }
    }

用法:

[TypeConverter(typeof(CharTypeConverter))]
public char PromptChar
{
    get { ... }
    set { ... }
}