2016-08-22 3 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を無効にした別のテキストボックススタイルがリソースのどこかに存在する可能性があります。Keyを適用します。 あなたStylex:Key="MyStyleTextBox"のようないくつかのKeyを追加し、テキストボックスに適用され、私仮定するを確認するには:

<TextBox Text="Text Box text" Style={StaticResource MyStyleTextBox}"></TextBox> 
関連する問題