2

如何在RichTextBox中對齊文本?看來控制不直接支持它。所以我正在尋找方法來模擬它。理想情況下,我會將控件的邊界固定,文本的末尾與底部對齊。如何在WPF RichTextBox中對齊文本

回答

0

該文本來自名爲PART_ContentHost的ScrollViewer,該文本位於由RichTextBox包裝的TextBoxBase的默認控件模板內。您應該重寫控件模板,並讓ScrollViewer將VerticalAlignment聲明爲Bottom,或者將模板綁定到VerticalContentAlignment。

下面,我做了後者。這是從Blend中提取的默認控制模板的修改版本。我所做的唯一更改是向ScrollViewer添加VerticalAlignment =「{TemplateBinding VerticalAlignment}」

(另請注意,它引用其定義爲的xmlns Microsoft_Windows_Themes:Microsoft_Windows_Themes =「CLR的命名空間:Microsoft.Windows.Themes;裝配= PresentationFramework.Aero」

我不確定如何,如果Aero是這將工作而不是用戶的機器

<Style x:Key="BottomAlignedTextBoxBaseStyle" 
     TargetType="TextBoxBase" 
     BasedOn="{StaticResource {x:Type TextBoxBase}}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBoxBase}"> 
       <Microsoft_Windows_Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true"> 
        <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
       </Microsoft_Windows_Themes:ListBoxChrome> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
         <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

再打開),使用它,簡單地說:

<RichTextBox Style="{StaticResource BottomAlignedTextBoxBaseStyle}" VerticalContentAlignment="Bottom" /> 
+0

我試圖改變與WPF Inspector中的財產,這是行不通的!你試過了嗎? – Alfa07 2011-06-02 09:37:11

+0

對不起,我在Style的BasedOn屬性中有一個拼寫錯誤。現在就試試? – Adrian 2011-06-02 15:43:52