在Xaml中设置char属性

时间:2011-06-07 15:41:14

标签: c# silverlight xaml windows-phone-7

也许这是微不足道的,但我没有想法......

最初我想为PasswordBox添加一些功能。因为它是一个密封的类,所以必须复制原始属性,其中包括PasswordChar。看起来微不足道,但是当我开始在Xaml中设置PasswordChar时,我无法摆脱解析器异常。

最后我只是定义了一个新属性

public char MyProperty {get; set; }

并尝试按如下方式在Xaml中设置它:

<MyPasswordBox MaxLength="3" Password="xxx" MyProperty="c" />

我得到一个异常,调用堆栈看起来像

at MS.Internal.XcpImports.CheckHResult()
at MS.Internal.XcpImports.ConvertStringToTypedCValue()
at MS.Internal.SilverlightTypeConverter.ConvertFrom()
at MS.Internal.FrameworkCallbacks.ConvertValueToPropertyType()
....
at MS.Internal.FrameworkCallbacks.SetValueToProperty()
at MS.Internal.FrameworkCallbacks.SetPropertyAttribute()
....
at System.Windows.Application.LoadComponent()
....

到目前为止,我可以阅读它,类型转换字符串 - &gt; char失败了。 请注意,每当我将MyProperty的类型更改为字符串(例如)时,一切都会正常工作。

有人知道如何实现char属性,以便可以从Xaml设置它们吗?

使用 Windows Phone 7 ,也许这就是问题所在。 (有限SVL 3)

1 个答案:

答案 0 :(得分:1)

我无法验证这是否有效,但你可以试一试。长格式xaml语法应该可以正常工作。

将以下内容添加到命名空间导入

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

然后以下内容应该有效

<MyPasswordBox MaxLength="3" Password="xxx">
    <MyPasswordBox.MyProperty>
        <sys:Char>c</sys:Char>
    </MyPasswordBox.MyProperty>
</MyPasswordBox>   

另一个解决方案是查看类型转换器以应用于您的属性,以便它将为您转换字符串。 Type Convereters and XAML