2016-08-22 86 views
0

我現在面臨的問題是,在爲資源字典中的文本框定義樣式之後,在文本框中鍵入的文本的VerticalContentAlignment始終保持最高。我希望它始終處於中心位置。在定義文本框時,我並不是重寫VerticalContentAlignment屬性。我還嘗試在創建文本框時設置VerticalContentAlignment屬性,並嘗試將其設置爲Center但無用。在resourcedictionary中定義的樣式沒有正確設置TextBox VerticalContentAlignment

你能幫我弄清楚我做錯了什麼,導致文本在任何時候都會垂直對齊而不是居中。請參見下圖:

enter image description here

請參閱我已爲文本框定義的樣式代碼,如下。

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="Background" Value="#FA092464" /> 
    <Setter Property="BorderBrush" Value="#80D7D8D8" /> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="CaretBrush" Value="White" /> 
    <Setter Property="FontSize" Value="16" /> 
    <Setter Property="Height" Value="32" /> 
    <Setter Property="BorderThickness" Value="1" /> 
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None" /> 
    <Setter Property="HorizontalContentAlignment" Value="Left" /> 
    <Setter Property="VerticalContentAlignment" Value="Center" /> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
    <Setter Property="AllowDrop" Value="true" /> 
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst" /> 
    <Setter Property="Stylus.IsFlicksEnabled" Value="False" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBox}"> 
       <Border x:Name="border" 
         Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         SnapsToDevicePixels="True"> 
        <ScrollViewer x:Name="PART_ContentHost" 
            VerticalAlignment="Center" 
            Focusable="false" 
            HorizontalScrollBarVisibility="Hidden" 
            VerticalScrollBarVisibility="Hidden" /> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter TargetName="border" Property="Opacity" Value="0.56" /> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter TargetName="border" Property="BorderBrush" Value="#FFD7D8D8" /> 
        </Trigger> 
        <Trigger Property="IsKeyboardFocused" Value="true"> 
         <Setter TargetName="border" Property="BorderBrush" Value="#FFD7D8D8" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <MultiTrigger> 
      <MultiTrigger.Conditions> 
       <Condition Property="IsInactiveSelectionHighlightEnabled" Value="true" /> 
       <Condition Property="IsSelectionActive" Value="false" /> 
      </MultiTrigger.Conditions> 
      <Setter Property="SelectionBrush" Value="Orange" /> 
     </MultiTrigger> 
    </Style.Triggers> 
</Style> 

回答

0

我原樣拷貝了這個Style並使用它。結果是與中心文本對齊的藍色文本框,而根據您的屏幕截圖,您的文本框具有白色背景,這意味着您的文本框使用另一個Style。 如果此Style位於某個資源字典中,資源中的某處可能存在另一個沒有密鑰的文本框樣式,該文本框樣式將覆蓋Style而您沒有要應用的Key。 爲了驗證我的猜想,添加到您的Style一些Keyx:Key="MyStyleTextBox"並適用於你的TextBox:

<TextBox Text="Text Box text" Style={StaticResource MyStyleTextBox}"></TextBox> 
相關問題