在Xaml中设置字符属性

本文关键字:字符 属性 设置 Xaml | 更新日期: 2023-09-27 17:58:39

也许这是微不足道的事情,但我没有主意。。。

最初我想为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()
....

据我所知,类型转换字符串->char失败了。请注意,每当我将MyProperty的类型更改为字符串(例如)时,一切都会正常工作。

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

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

在Xaml中设置字符属性

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

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

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

那么以下内容应该可以

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

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