Показать пароль Char с помощью настройки стиля для PasswordBox в Silverlight для Windows Phone 7 - PullRequest
0 голосов
/ 26 ноября 2011

Я хочу создать свой собственный блок паролей, чтобы обрабатывать фоновое состояние, когда блок паролей находится в фокусе или потерял фокус. Это стиль для моего поля пароля:

<Style x:Key="GamePasswordBox" TargetType="PasswordBox">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="PasswordBox">
                <Grid>
                    <vsm:VisualStateManager.VisualStateGroups>
                        <vsm:VisualStateGroup x:Name="CommonStates">
                            <vsm:VisualState x:Name="GotFocus">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" Storyboard.TargetName="Background" Storyboard.TargetProperty="Opacity" To=".6"/>
                                </Storyboard>
                            </vsm:VisualState>
                            <vsm:VisualState x:Name="LostFocus">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" Storyboard.TargetName="Background" Storyboard.TargetProperty="Opacity" To="1"/>
                                </Storyboard>
                            </vsm:VisualState>
                        </vsm:VisualStateGroup>
                    </vsm:VisualStateManager.VisualStateGroups>
                    <Border x:Name="Background" CornerRadius="0" Background="Transparent" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
                        <Grid Background="{TemplateBinding Background}" Margin="0">
                        </Grid>
                    </Border>
                    <ContentPresenter
                          x:Name="contentPresenter"
                          Content="{TemplateBinding Password}"
                          Margin="{TemplateBinding Padding}"
                        />
                </Grid>                    
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Проблема в том, что в поле пароля теперь отображаются символы ввода вместо символов пароля маски. Как решить эту проблему?

1 Ответ

1 голос
/ 26 ноября 2011

Глядя на то, что генерируется Expression Blend при шаблонировании PasswordBox, он фактически встраивает другой PasswordBox вместо того, чтобы иметь ContentPresenter.

Если вам действительно нужно использовать ContentPresenter, вы можете взглянуть на создание конвертера значений, который принимает длину входящей строки и возвращает строку, состоящую из всех PasswordChar, с длиной, равной длине входной строки..

Еще один вариант, который я видел, но пока не могу найти оригинальное сообщение, это использовать шрифт, где каждый символ выглядит как точка пароля.

Редактировать: Я нашелшрифт со всеми «паролями» для паролей, который вы можете получить по адресу http://hypv0141.appliedi.net/justbullets.ttf, там могут быть и лучшие.

...