2012-06-05 41 views
2

因此,我將文本框設置爲正在處理的應用程序,並且突然間我看不到任何文本我的文本框。我覺得我錯過了某種ContentPresenter。無論如何,這裏是造型。XAML - 文本在我的文本框中未顯示

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="Height" Value="26"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TextBox"> 
       <Border BorderThickness="{TemplateBinding BorderThickness}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         Background="{TemplateBinding Background}"> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Value="#FF2F2F2F" Property="Background"/> 
         <Setter Value="White" Property="Foreground"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

這裏是我如何文本輸入框是建立

<TextBox Grid.Row="2" Grid.Column="5" BorderThickness="1" Text="{Binding VariableName}"> 

有什麼想法?

回答

5

你的預感是正確的,你需要有一個模板部分名稱爲PART_ContentHost inside your ControlTemplate

<ControlTemplate TargetType="TextBox"> 
    <Border BorderThickness="{TemplateBinding BorderThickness}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        Background="{TemplateBinding Background}"> 
     <ScrollViewer Margin="0" 
        x:Name="PART_ContentHost" /> 
    <!-- ... --> 

這是因爲ControlTemplateTextBox需要與名稱PART_ContentHost的一部分。您可以查看ControlTemplate examples for the built-in controls以瞭解需要命名的模板部件以及每個部件必須能夠執行哪些操作才能保留常規功能。

+0

這似乎並不適用於我。 – Stylzs05

+0

@ Stylzs05:我把你的請求看成是一個'Button',因爲......我不知道爲什麼。嘗試添加名爲「PART_ContentHost」的控件。 – user7116

+0

啊,就是這樣。感謝你剛剛給我的鏈接。我不知道這個名單存在。 – Stylzs05