Я запустил новое маленькое приложение WPF, которое имеет что-то вроде формы ввода, которая помещена поверх картинки.Эта картинка содержит заполнители для данных, которые должны быть введены, и места, в которых расположены текстовые поля, так что пользователь фактически вводит данные в форму, как он это делал бы вручную или в пишущей машинке.Я хотел добавить эффект, частично скрывая текстовое поле, когда пользователь покидает поле, поэтому поместил некоторые обработчики событий в одно из полей, добавив этот код:
<TextBox Height="23" VerticalAlignment="Top" Width="237"
HorizontalAlignment="Left" Margin="641,25,0,0"
Name="txtAmount" LostFocus="txtAmount_LostFocus" />
private void txtAmount_LostFocus(object sender, RoutedEventArgs e)
{
Opacity = .5;
}
Это сработало, поэтому я продолжил добавлять код для установкиодинаковое поведение во всех textBoxes, поэтому я изменил код выше с кодом ниже:
<Window.Resources>
<Storyboard x:Key="FadeOut">
<DoubleAnimation From="1.0" To="0.5"
Duration="0:0:0.2"
Storyboard.TargetProperty="Opacity">
</DoubleAnimation>
</Storyboard>
<Storyboard x:Key="FadeIn">
<DoubleAnimation From="0.5" To="1.0"
Duration="0:0:0.2"
Storyboard.TargetProperty="Opacity"/>
</Storyboard>
<Style x:Key="InTheShadow" >
<Style.Setters>
<Setter Property="TextBox.Opacity" Value="0.5" />
</Style.Setters>
</Style.Setters>
<Style.Triggers>
<EventTrigger RoutedEvent="TextBox.GotFocus">
<BeginStoryboard Storyboard="{StaticResource FadeIn}"/>
</EventTrigger>
<EventTrigger RoutedEvent="TextBox.LostFocus">
<BeginStoryboard Storyboard="{StaticResource FadeOut}"/>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
В первом коде также обрабатывалось событие GotFocus, но это почти тот же код, поэтому второй код реализовал это, иэто было помещено во все текстовые поля, устанавливающие стиль.
Теперь это тоже работает, но я хотел добавить тот же эффект для MouseEnter / MouseLeave
<EventTrigger RoutedEvent="TextBox.MouseEnter">
<BeginStoryboard Storyboard="{StaticResource FadeIn}"/>
</EventTrigger>
<EventTrigger RoutedEvent="TextBox.MouseLeave">
<BeginStoryboard Storyboard="{StaticResource FadeOut}"/>
</EventTrigger>
но, здесь мойвозникает вопрос , эти события, очевидно, всегда меняли Непрозрачность, и это не было моим намерением.Я не хотел менять непрозрачность для TextBox с фокусом, я хотел сохранить эту непрозрачность на 100%.