mattsven mattsven - 1 month ago 13
C# Question

Remove default mouseover/focus effect on textboxes in WPF?

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?

Answer

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>