Исключение с типом System:Char

Я пытаюсь создать многоразовую System:Char ценность в моем xaml Ресурсы.

Я имею:

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

Затем:

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

Я получаю исключение:

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

Но... у меня также есть:

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

А также...

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

И то и другое String а также Double отлично работает

Идеи??

2 ответа

Решение

Этот код работает для меня как в Silverlight, так и в 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>

Какой собственности вы пытаетесь присвоить символ?

Я предполагаю, что Char - это структура, а не объект, и на самом деле вы видите бокс 16-битного целочисленного значения, представляющего Unicode. Я склонен рассматривать XAML как сериализацию объектов со специализацией, и если Char на самом деле является структурой, эта модель может сломаться.

Возможно, вы захотите укусить пулю и использовать вместо нее строку длины.

ОБНОВЛЕНИЕ: Я согласен с твердой аргументацией gmcalab, и на основании этого провел эксперимент, используя пространство имен для mscorlib и соответствующий ресурс персонажа. Это работало безотказно. (Мы сейчас смотрим на проблему пространства имен или библиотеки?)

Другие вопросы по тегам