2013-05-21 72 views
0

當我用鼠標點擊文本框時,焦點不會顯示。當我通過鍵盤進入文本框時,焦點顯示。我正在嘗試下面的代碼。所以請任何人都可以告訴我如何解決這個問題。當鼠標點擊時,文本框焦點不起作用wpf

<Style x:Key="TextBoxFocusVisualStyle" > 
    <Setter Property="Control.Template"> 
      <Setter.Value> 
       <ControlTemplate> 
         <Image Source="/Mit;component/Resources/txtFocus.png" Stretch="Fill" Margin="-8,-6,-8,-6"/> 
       </ControlTemplate> 
      </Setter.Value> 
    </Setter> 
</Style> 

<TextBox Grid.Column="2" Height="44" Margin="20,48,0,0" Name="txtEmailId" VerticalAlignment="Top" KeyboardNavigation.TabIndex="2" MaxWidth="400" HorizontalAlignment="Left" Width="350" Text="" FocusVisualStyle="{DynamicResource TextBoxFocusVisualStyle}" VerticalContentAlignment="Center" FontWeight="SemiBold" FontSize="18" ContextMenu="{x:Null}" /> 

我也試過下面的代碼@hattenn答案後:

<Application x:Class="WpfApplication1.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 



     <Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}"> 
      <Style.Triggers> 
       <Trigger Property="IsFocused" Value="True"> 
        <Setter Property="Background"> 
         <Setter.Value> 
          <VisualBrush> 
           <VisualBrush.Visual> 
            <Grid> 
             <Image Source="/WpfApplication1;component/Resources/txtFocus.png" Stretch="Fill" Margin="-8,-6,-8,-6"/> 
            </Grid> 
           </VisualBrush.Visual> 
          </VisualBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 


    </Application.Resources> 

<TextBox Height="23" Name="textBox1" Width="120" Focusable="True" FocusVisualStyle="{DynamicResource TextBoxStyle}"/> 

但它不爲我工作。什麼都沒發生。請建議。 感謝

回答

1

FocusVisualStyle僅供鍵盤焦點,您可以點擊此處查看:

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.focusvisualstyle.aspx

對於一般的焦點時,您可以使用IsFocused屬性,詳細信息如下:

http://msdn.microsoft.com/en-us/library/system.windows.uielement.isfocused.aspx

作爲一個例子,你可以嘗試這樣的事情:

<Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}"> 
    <Style.Triggers> 
     <Trigger Property="IsFocused" Value="True"> 
      <Setter Property="Background"> 
       <Setter.Value> 
        <VisualBrush> 
         <VisualBrush.Visual> 
          <Grid> 
           <Image Source="/Mit;component/Resources/txtFocus.png" Stretch="Fill" Margin="-8,-6,-8,-6"/> 
          </Grid> 
         </VisualBrush.Visual> 
        </VisualBrush> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

我嘗試這樣做。但它不適合我。沒有錯誤,但沒有任何影響。任何想法? –

+0

嗯,我試了一下,它完美的工作。幾個想法:1)是否有其他風格影響'TextBox'? 2)您是否使用了正確的密鑰名稱?在你的例子中,你的鍵名是'TextBoxFocusVisualStyle',在這個例子中鍵名是'TextBoxStyle'。檢查這些,但這個例子肯定是有效的,這可能是干擾你的代碼與這種風格。 – hattenn

+0

請更新我的問題..... thx –

0

只需添加樣式文本框:

position:relative; 
+0

去考古學徽章? – Strawberry