通过鼠标单击wpf进行聚焦时,文本框焦点不起作用

时间:2013-05-21 10:41:51

标签: wpf c#-4.0 textbox wpf-controls focus

当我用鼠标点击文本框时,焦点不会显示。当我通过键盘进入文本框然后焦点显示。我正在尝试下面的代码。所以请任何人建议我如何解决这个问题。

 <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}"/>

但它对我不起作用。没啥事儿。请建议。 感谢

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

只需在文本框中添加样式:

position:relative;