2015-05-24 74 views
1

我爲我的文本框創建了一個樣式,並且爲了給它定製邊框,我決定用其ControlTemplate進行磨練,但是當我運行該項目時,光標似乎並未顯示在文本框中,爲什麼是這樣,我該如何解決它?WPF:Styled TextBox Not Showing Cursor

我的風格的代碼如下

<Style x:Key="PrimaryTextBox" TargetType="{x:Type TextBox}"> 
    <Setter Property="BorderBrush" Value="#FFBAC7DC"/> 
    <Setter Property="MinHeight" Value="30"/> 
    <Setter Property="MinWidth" Value="40"/> 
    <Setter Property="BorderBrush" Value="#FF07172B"/> 
    <Setter Property="BorderThickness" Value="2"/> 
    <Setter Property="Padding" Value="4"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBox}"> 
       <Border CornerRadius="3" Padding="4" 
         Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
        <ContentPresenter Content="{TemplateBinding Text}"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

及其實施

<TextBox Style="{StaticResource PrimaryTextBox}"/> 

回答

3

由於要更換的ControlTemplate的文本框,你需要確保你佔了所有的功能如果您希望它們正常工作,可以使用TextBox。內容設置爲字符串的ContentPresenter只是簡單地顯示帶有該文本的TextBlock。沒有辦法與它進行交互。

你想擁有,而不是一個ContentPresenter什麼有可能是這樣的:

<ScrollViewer Name="PART_ContentHost" /> 

這就是文本框實現將會一切就緒命名的一部分。如果它找不到,那麼它的大部分功能將無法工作。

無論何時您爲控件創建自己的模板,最好使用引用來確保不會錯過任何重要的東西。您可以找到MSDN上所有控件的示例。在TextBox的情況下,您可以在這裏找到示例:TextBox Styles and Templates

+0

如果在沒有首先設置ControlTemplate的情況下發生此問題,情況如何? (像這裏的一個:https://stackoverflow.com/q/41319889/997940) –