Windows7上的WPF TextBox边框

Net*_*ger 2 wpf xaml textbox windows-7

在Windows7(也许也是vista)中,TextBoxes现在在接收输入焦点或获取MouseOver时会获得蓝色强调矩形.

在我的WPF应用程序中,蓝色焦点矩形真的像拇指一样伸出 - 它与应用程序其余部分的视觉风格不匹配.

如何禁用它 - 或者更好的是,自定义它?

(在xaml中将FocusVisualStyle设置为{x:Null}不会执行任何操作.)

Kis*_*mar 5

这是因为TextBox的默认样式.要修改此行为,您必须创建自定义样式/模板.看看这个样本吧

<Style x:Key="TextBoxStyle1" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="Padding" Value="1"/>
        <Setter Property="AllowDrop" Value="true"/>
        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
        <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
        <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <Border x:Name="border" Background="#FF8F8F8F" BorderBrush="#FF585858" CornerRadius="3" BorderThickness="2">
                        <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </Border>
                    <ControlTemplate.Triggers>

                        <Trigger Property="IsFocused" Value="True">
                            <Setter Property="BorderBrush" TargetName="border" Value="Silver"/>
                            </Trigger>

                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Opacity" TargetName="border" Value="0.15"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderBrush" TargetName="border" Value="Silver"/>
                        </Trigger>

                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.惭愧我们需要这样的解决方法. (2认同)