Exceção com tipo de tipo: char
-
27-09-2019 - |
Pergunta
Estou tentando criar um reutilizável System:Char
valor no meu xaml
Recursos.
Eu tenho:
xmlns:s="clr-namespace:System;assembly=mscorlib"
Então:
<s:Char x:Key="MaskPromptChar">#</s:Char>
Eu recebo uma exceção:
The type 'Char' was not found. [Line: 8 Position: 44]
Mas ... eu também tenho:
<s:Double x:Key="DefaultControlWidth">200</s:Double>
E...
<s:String x:Key="ApplicationTitle">My Title</s:String>
Ambos String
e Double
Funciona bem.
Ideias??
Solução
Este código funciona para mim no Silverlight e no 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>
A que propriedade você está tentando atribuir o char?
Outras dicas
Meu palpite é que Char é uma estrutura, em vez de um objeto, e o que você está realmente olhando é o boxe de um valor inteiro de 16 bits representando Unicode. Eu tendem a olhar para XAML como uma serialização de especialização de objetos, e se char é realmente um estrutura, esse modelo pode quebrar.
Você pode considerar morder a bala e usar uma série de comprimento uma.
ATUALIZAR: Eu concordo com a sólida linha de raciocínio do GMCalab e, com base nessa, conduziu um experimento usando um espaço para nome ao MSCORLIB e o recurso de caractere correspondente. Funcionou sem problemas. (Agora estamos olhando para um espaço de namespace ou colisão da biblioteca?)