如何在WP7 Silverlight中使用模板在TextBox中正确显示文本?

时间:2011-10-08 16:51:42

标签: c# silverlight templates windows-phone-7 textbox

我希望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 个答案:

答案 0 :(得分:2)

问题在于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之间的距离,使控件更加紧凑。