2016-03-01 141 views
1

我正在製作一個wpf表單(幾天前從winform移出),並且我想自定義我的文本框。我得到了文本框表現我想要它,但現在我不能給它輸入,並且它沒有響應,當我點擊它。我想我打破了它,無論如何這裏是我的代碼:我打破了文本框

<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="10,48,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" Foreground="White"> 
     <TextBox.Style> 
      <Style TargetType="{x:Type TextBox}"> 
       <Setter Property="BorderBrush" Value="#FF497AB4"/> 
       <Setter Property="Background" Value="#FF2E2E2E"/> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type TextBox}"> 
          <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"/> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="BorderBrush" Value="OrangeRed"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 
    </TextBox> 

那麼我做錯了什麼?謝謝!

+0

添加名爲「PART_ContentHost」的元素,我認爲這個問題來自於模板二傳手,讓測試項目最多的是:) – Sidewinder94

+0

檢查MSDN文章指出:HTTPS: //msdn.microsoft.com/en-us/library/ms752068(v=vs.110).aspx我想你在你的'ControlTemplate'中忘記了一些東西,這就是你的風格部分讓你無法交互與文本框 – Sidewinder94

回答

1

嘗試添加的ScrollViewer到您的模板,像這樣:

<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> 
    <ScrollViewer Margin="0" x:Name="PART_ContentHost"/> 
</Border> 

你有一些示例模板here

的問題是,模板沒有一個ContentHost,所以它會不呈現內容。要添加ContentHost,你應該解釋here

+0

好吧,它的工作!謝謝 –

+0

哇,現在我想知道爲什麼在邊框中添加scrollviewer使文本框工作oO(我有一個預感,但我想確定) – Sidewinder94

+1

@ Sidewinder94請參閱[this](https:// msdn .microsoft.com/en-us/library/ms753930(v = vs.85).aspx) – Pikoh