Windows7 上的 WPF 文本框边框

标签 wpf xaml windows-7 textbox

在 Windows7(也可能是 vista)中,文本框现在在接收输入焦点或获得 MouseOver 时会获得蓝色强调矩形。

在我的 WPF 应用程序中,蓝色焦点矩形确实非常突出 - 它与应用程序其余部分的视觉风格不匹配。

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

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

最佳答案

这是因为文本框应用了默认样式。要修改此行为,您必须创建自定义样式/模板。看看这个示例

<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>

关于Windows7 上的 WPF 文本框边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8328333/

相关文章:

wpf - 拉伸(stretch)分离器不起作用

c# - 所见即所得 View 创建的 WPF 设计器限制和规则摘要?

wpf - XAML-LayoutRoot是强制性的吗?

c# - 我应该如何将托管的 DirectX 程序迁移到 Windows 7?

wcf - 使用 IIS7 和 WCF 时出现问题 - 甚至无法加载 .SVC

wpf - 更改 WPF 中组合框的样式(最好在 Blend 中)

WPF 从代码隐藏更改按钮图像

wpf - 让 WPF 控件垂直拉伸(stretch)

c# - 在 WPF 中通过 XAML 代码加载外部图像?

VB.NET - 在没有外部 DLL 的情况下集成 Win7 任务栏进度?