WPF BorderBrush на TextBox исчезает после установки на IsMouseOver Trigger - PullRequest
2 голосов
/ 05 декабря 2010

У меня ниже XAML, который пытается установить границу всех текстовых полей в окне на красный OnMouseOver. Что происходит, когда мышь находится над текстовым полем, свойства FontSize и Foreground устанавливаются, но BorderBrush устанавливается только на мгновение, прежде чем вернуться к своему предыдущему значению по умолчанию. Я хочу, чтобы BorderBrush оставался красным, пока мышь больше не будет над текстовым полем. Есть идеи, почему это происходит?

<Window x:Class="StylesApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Width" Value="250" />
            <Setter Property="Height" Value="50" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="FontSize" Value="20" />
                    <Setter Property="Foreground" Value="Red" />
                    <Setter Property="BorderBrush" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <TextBox>
           My TextBox
        </TextBox>
    </Grid>
</Window>

1 Ответ

0 голосов
/ 05 декабря 2010

Я предполагаю, что TextBox имеет другую анимацию для BorderBrush, когда для свойства IsMouseOver установлено значение true.Однако этот триггер активен только тогда, когда BorderThickness точно равен 1,0.Таким образом, чтобы преодолеть это, вы можете изменить BorderThickness на 1.01 или что-то в триггере, и BorderBrush будет оставаться красным, пока мышь находится над TextBox.

<Style TargetType="{x:Type TextBox}">
    <Setter Property="Width" Value="250" />
    <Setter Property="Height" Value="50" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderThickness" Value="1.01" />
            <Setter Property="FontSize" Value="20" />
            <Setter Property="Foreground" Value="Red" />
            <Setter Property="BorderBrush" Value="Red" />
        </Trigger>
    </Style.Triggers>
</Style>
...