2010-10-04 3 views
3

Je tente de créer une valeur System:Char réutilisable dans mes xaml ressources.Exception avec le type du système: Char

je:

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

Puis:

<s:Char x:Key="MaskPromptChar">#</s:Char> 

je reçois une exception:

The type 'Char' was not found. [Line: 8 Position: 44] 

Mais ... J'ai aussi:

<s:Double x:Key="DefaultControlWidth">200</s:Double> 

Et ...

<s:String x:Key="ApplicationTitle">My Title</s:String> 

deux String et Double excellent travail.

Des idées?

Répondre

1

Ce code fonctionne pour moi à la fois Silverlight et 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> 

À quelle propriété essayez-vous d'assigner le caractère?

+0

J'assigne à la propriété d'un contrôle 3e partie.Actuellement, en ce moment je ne l'attribue à rien, juste en le définissant dans xaml. A l'exécution, il se plaint de 'Le type 'Char' n'a pas été trouvé. [Ligne: 8 Position: 44] ' – Gabe

+0

Avez-vous nommé l'un de vos types dans votre projet nommé Char? Cela pourrait provoquer un conflit de noms. –

+0

Non, je n'ai pas nommé de type Char n'importe où. – Gabe

0

Ma conjecture est que Char is a structure, plutôt qu'un objet, et qu'est-ce que vous regardez vraiment est la boxe d'une valeur entière de 16 bits représentant Unicode. J'ai tendance à regarder XAML comme sérialisation de spécialisation des objets , et si Char est en fait un struct, ce modèle peut tomber en panne.

Vous voudrez peut-être envisager de mordre la balle et à l'aide d'une chaîne de longueur à la place.

MISE À JOUR: Je suis d'accord avec la solide ligne des gmcalab de raisonnement, et sur cette base a mené une expérience en utilisant un espace de noms pour mscorlib et la ressource de caractères correspondant. Il a travaillé sans accroc. (Est-ce que nous cherchons maintenant à un espace de noms ou d'une bibliothèque problème de collision?)

+1

Mais Double est aussi une structure, donc si cela fonctionne, je m'attendrais à ce que Char soit correct ... –

+0

J'ai essayé d'utiliser une chaîne avec une longueur, mais quand je vais utiliser la touche, ça ne sera pas convertit le type 'string' en type' char'. par exemple 'PromptChar = '{StaticResource MyStringLengthOfOne}' me donne une exception 'objet de type « System.String » ne peut pas être convertie en type « System.Char'.' – Gabe

+0

Je disais simplement en utilisant l'exemple de mon titre et de le garder une Chaîne dans toute l'application. Peut-être pas idéal pour votre cas de masquage, cependant. –

Questions connexes