在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语法应该可以正常工作。
将以下内容添加到您的命名空间导入
xmlns:sys="clr-namespace:System;assembly=mscorlib"
那么以下内容应该可以
<MyPasswordBox MaxLength="3" Password="xxx">
<MyPasswordBox.MyProperty>
<sys:Char>c</sys:Char>
</MyPasswordBox.MyProperty>
</MyPasswordBox>
另一种解决方案是查看类型转换器以应用于您的属性,以便它为您转换字符串。类型转换器和XAML。