2013-05-21 131 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