Как я могу правильно отобразить текст в текстовом поле, используя шаблоны в WP7 Silverlight?

#c# #silverlight #templates #windows-phone-7 #textbox

#c# #silverlight #шаблоны #windows-phone-7 #текстовое поле

Вопрос:

Я хочу, чтобы мои углы 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:

Проблема в том, что TextBox ваш in 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" — это просто делает текстовое поле достаточно высоким, чтобы правильно отображать текст.

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

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