Как правильно отобразить текст в TextBox, используя шаблоны в WP7 Silverlight? - PullRequest
1 голос
/ 08 октября 2011

Я хочу, чтобы углы моего TextBox имели CornerRadius = 12.Я использую ControlTemplate, все хорошо, но текст в текстовом поле, когда я пишу что-то, показывает пробелы или точки.

Вот код:

       <TextBox x:Name="UsernameTextBox" Text="{Binding Username, Mode=TwoWay}" Background="White" BorderBrush="#FF9ED3C1"  >
                <!--<TextBox.Text>
                    <Binding ElementName="username" ></Binding>
                </TextBox.Text>-->
                <TextBox.Template>
                    <ControlTemplate TargetType="TextBox">
                        <Border BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="12" Margin="12"  >
                            <TextBox Text="{TemplateBinding Text}" Height="48" Background="{TemplateBinding Background}"  Foreground="{TemplateBinding Foreground}" />  
                        </Border>
                    </ControlTemplate>                       
                </TextBox.Template> 
            </TextBox> 

Что я должен изменитьили каким другим способом я могу сделать то же самое?

1 Ответ

2 голосов
/ 24 октября 2011

Проблема в том, что TextBox в вашем ControlTemplate просто недостаточно для правильного отображения текста.То, что вы видите, это не точки или пробелы, а верхние части букв, которые отображаются внизу, где они больше не видны.Чтобы правильно отобразить текст, вы должны увеличить высоту TextBox или уменьшить размер шрифта.

Следующий шаблон показывает некоторые возможные модификации (для вашего внутреннего TextBox):

<TextBox Text="{TemplateBinding Text}" Height="71" FontSize="{TemplateBinding FontSize}" Background="{TemplateBinding Background}"  Foreground="{TemplateBinding Foreground}" Margin="-7,-8" BorderThickness="1" />
  • Height="71" - это просто делает TextBox достаточно высоким, чтобы правильно отобразить текст.

  • FontSize="{TemplateBinding FontSize}" - также привязать к FontSize, чтобы вы могли уменьшить свой текст в свойствах объекта в Visual Studio (например, установите его на FontSize="{StaticResource PhoneFontSizeSmall}"; таким образом вы можете уменьшить высоту TextBox на несколько пикселей)

  • Margin="-7,-8" - уменьшите расстояние между TextBox и Border, чтобы сделать элемент управления более компактным.

...