Search code examples
c#wpfexpression-blend

Remove default mouseover/focus effect on textboxes


I have created a kind of custom TextBox in Expression Blend. I have changed the fill of the background and border to a gradient, and added in a Shadow Effect.

I've noticed that when I mouseover or focus my TextBox, some default behavior/(style?) of WPF takes over and my border is changed.

I was wondering if there was anyway to prevent or stop WPF from changing my TextBoxes style when I focus or mouseover it. Is this possible?


Solution

  • Does you custom style set the OverridesDefaultStyle property to true? I believe this should prevent default values being drawn from the default style.

    If so, and this isn't working (or you want to use your own border), all I can think is that you will need to override the default styling mechanism for the event of the appropriate property changing using a Trigger in your 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>