Excepción con el tipo de sistema: Char
-
27-09-2019 - |
Pregunta
Estoy intentando crear un valor System:Char
reutilizable en mis recursos xaml
.
Tengo:
xmlns:s="clr-namespace:System;assembly=mscorlib"
A continuación:
<s:Char x:Key="MaskPromptChar">#</s:Char>
me sale una excepción:
The type 'Char' was not found. [Line: 8 Position: 44]
Pero ... También tengo:
<s:Double x:Key="DefaultControlWidth">200</s:Double>
Y ...
<s:String x:Key="ApplicationTitle">My Title</s:String>
Tanto String
y el trabajo Double
bien.
Ideas ??
Solución
Este código funciona para mí, tanto en Silverlight y 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>
¿Qué propiedad está tratando de asignar el char a?
Otros consejos
Mi conjetura es que Char es una estructura, en lugar de un objeto, y lo que es en realidad está mirando es el boxeo de un valor entero de 16 bits que representa Unicode. Tiendo a mirar en XAML como una serialización especialización de objetos , y si Char es en realidad un struct , este modelo puede romper.
Es posible que desee considerar la posibilidad de morder la bala y el uso de una cadena de longitud uno en su lugar.
Actualizar : Estoy de acuerdo con la línea continua de gmcalab de razonamiento, y sobre esa base llevado a cabo un experimento utilizando un espacio de nombres a mscorlib y el correspondiente recurso de carácter. Se trabajó a pedir de boca. (¿Estamos ante un espacio de nombres o problema de colisión biblioteca?)