删除默认的鼠标悬停/注重文本框的效果

问题描述 投票:15回答:3

我在Expression Blend中创造了一种定制TextBox的。我已经改变了背景和边框渐变的填充,并增加了在阴影效果。

我注意到,当我鼠标悬停或聚焦我TextBox,WPF的一些默认行为/(风格?)接管和我的边界被改变。

我在想,如果有无论如何要阻止或改变我的风格TextBoxes当我专注或鼠标悬停它停止WPF。这可能吗?

c# wpf expression-blend
3个回答
2
投票

请问您的自定义样式设置OverridesDefaultStyle属性true?我相信这应该防止默认的样式正在绘制的默认值。

如果是这样,这是不工作(或您希望使用自己的边界),所有我能想到的是,你将需要覆盖默认样式机制,为相应的属性在Trigger使用Style改变/时ControlTemplate

<Style x:Key="Triggers" TargetType="TextBox">
  <Style.Triggers>
    <Trigger Property="IsMouseOver" Value="true">
        <Setter Property = "BorderBrush" Value="{Binding ToYourBorder}"/>
    </Trigger>
  </Style.Triggers>
</Style>

22
投票

将简单的解决方案正好被设置文本框边框的厚度为0,然后再包文本框自己的边界:

<Border BorderBrush="LightGray" BorderThickness="1">
   <TextBox Text="{Binding OutlinePlain, Mode=TwoWay, NotifyOnTargetUpdated=True}"
                         BorderThickness="0"                                
   </TextBox>
</Border>

18
投票

你应该用一个新的模板:

<Style TargetType="{x:Type TextBox}">
  <Setter Property="SnapsToDevicePixels" Value="True"/>
  <Setter Property="OverridesDefaultStyle" Value="True"/>
  <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
  <Setter Property="AllowDrop" Value="true"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type TextBoxBase}">
        <Border 
          Name="Border"
          CornerRadius="2" 
          Padding="2"
          Background="#FFFFFF"
          BorderBrush="#888888"
          BorderThickness="1" >
          <ScrollViewer Margin="0" x:Name="PART_ContentHost"/>
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsEnabled" Value="False">
            <Setter TargetName="Border" Property="Background" Value="#EEEEEE"/>
            <Setter TargetName="Border" Property="BorderBrush" Value="#EEEEEE"/>
            <Setter Property="Foreground" Value="#888888"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

我删除了触发IsMouseOver

看看这里的更多信息:TextBox Styles and Templates

© www.soinside.com 2019 - 2024. All rights reserved.