XFEstudio/MyFirstRespo / XFEToolBox/Views/Controls/PasswordHintTextBox.xaml

<UserControl x:Class="XFEToolBox.Views.Controls.PasswordHintTextBox"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:XFEToolBox.Views.Controls"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800" Name="passwordHintTextBox">
    <Border CornerRadius="{Binding EditorCornerRadius, ElementName=passwordHintTextBox}" BorderBrush="{Binding EditorBorderBrush, ElementName=passwordHintTextBox}" BorderThickness="{Binding EditorBorderThickness, ElementName=passwordHintTextBox}" Background="{Binding Background, ElementName=passwordHintTextBox}" Padding="5,0,0,0">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="25"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="25"/>
            </Grid.RowDefinitions>
            <local:HintTextBox x:Name="hintTextBox" BorderThickness="0" Background="{Binding Background, ElementName=passwordHintTextBox}" Foreground="{Binding Foreground, ElementName=passwordHintTextBox}" HintBackground="{Binding HintBackground, ElementName=passwordHintTextBox}" Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ElementName=passwordHintTextBox}" HintForeground="{Binding HintForeground, ElementName=passwordHintTextBox}" HintText="{Binding HintText, ElementName=passwordHintTextBox}" HintFontSize="{Binding HintFontSize, ElementName=passwordHintTextBox}" HintFontFamily="{Binding HintFontFamily, ElementName=passwordHintTextBox}" HintFontWeight="{Binding HintFontWeight, ElementName=passwordHintTextBox}" HintTextHorizontalAlignment="{Binding HintTextHorizontalAlignment, ElementName=passwordHintTextBox}" HintTextVerticalAlignment="{Binding HintTextVerticalAlignment, ElementName=passwordHintTextBox}" HintTextMargin="{Binding HintTextMargin, ElementName=passwordHintTextBox}" HintTextOpacity="{Binding HintTextOpacity, ElementName=passwordHintTextBox}" CaretBrush="{Binding CaretBrush, ElementName=passwordHintTextBox}" SelectionBrush="{Binding SelectionBrush, ElementName=passwordHintTextBox}" SelectionTextBrush="{Binding SelectionTextBrush, ElementName=passwordHintTextBox}" IsReadOnly="{Binding IsReadOnly, ElementName=passwordHintTextBox}" IsReadOnlyCaretVisible="{Binding IsReadOnlyCaretVisible, ElementName=passwordHintTextBox}" HorizontalContentAlignment="{Binding HorizontalContentAlignment, ElementName=passwordHintTextBox}" VerticalContentAlignment="{Binding VerticalContentAlignment, ElementName=passwordHintTextBox}" HorizontalScrollBarVisibility="{Binding HorizontalScrollBarVisibility, ElementName=passwordHintTextBox}" VerticalScrollBarVisibility="{Binding VerticalScrollBarVisibility, ElementName=passwordHintTextBox}" AcceptsReturn="{Binding AcceptsReturn, ElementName=passwordHintTextBox}" AcceptsTab="{Binding AcceptsTab, ElementName=passwordHintTextBox}" IsEnabled="{Binding IsEnabled, ElementName=passwordHintTextBox}" IsInactiveSelectionHighlightEnabled="{Binding IsInactiveSelectionHighlightEnabled, ElementName=passwordHintTextBox}" UndoLimit="{Binding UndoLimit, ElementName=passwordHintTextBox}" IsUndoEnabled="{Binding IsUndoEnabled, ElementName=passwordHintTextBox}" TextWrapping="{Binding TextWrapping, ElementName=passwordHintTextBox}" TextAlignment="{Binding TextAlignment, ElementName=passwordHintTextBox}" TextDecorations="{Binding TextDecorations, ElementName=passwordHintTextBox}" VerticalAlignment="Center"/>
            <Button x:Name="visibleButton" FocusVisualStyle="{x:Null}" Grid.Column="1" Width="23" Height="23" VerticalAlignment="Center" HorizontalAlignment="Center">
                <Button.Style>
                    <Style TargetType="Button">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate>
                                    <Grid>
                                        <Border x:Name="mainBorder" CornerRadius="8" Background="#9898e7" Opacity="0.15"/>
                                        <ContentPresenter Content="{Binding Content, ElementName=visibleButton}"/>
                                    </Grid>
                                    <ControlTemplate.Triggers>
                                        <EventTrigger RoutedEvent="MouseEnter">
                                            <BeginStoryboard>
                                                <Storyboard>
                                                    <DoubleAnimation Storyboard.TargetName="mainBorder" Storyboard.TargetProperty="Opacity" To="0.3" Duration="0:0:0.3">
                                                        <DoubleAnimation.EasingFunction>
                                                            <CubicEase EasingMode="EaseOut"/>
                                                        </DoubleAnimation.EasingFunction>
                                                    </DoubleAnimation>
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </EventTrigger>
                                        <EventTrigger RoutedEvent="MouseLeave">
                                            <BeginStoryboard>
                                                <Storyboard>
                                                    <DoubleAnimation Storyboard.TargetName="mainBorder" Storyboard.TargetProperty="Opacity" To="0.15" Duration="0:0:0.3">
                                                        <DoubleAnimation.EasingFunction>
                                                            <CubicEase EasingMode="EaseOut"/>
                                                        </DoubleAnimation.EasingFunction>
                                                    </DoubleAnimation>
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </EventTrigger>
                                        <EventTrigger RoutedEvent="PreviewMouseLeftButtonDown">
                                            <BeginStoryboard>
                                                <Storyboard>
                                                    <DoubleAnimation Storyboard.TargetName="mainBorder" Storyboard.TargetProperty="Opacity" To="0.5" Duration="0:0:0.3">
                                                        <DoubleAnimation.EasingFunction>
                                                            <CubicEase EasingMode="EaseOut"/>
                                                        </DoubleAnimation.EasingFunction>
                                                    </DoubleAnimation>
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </EventTrigger>
                                        <EventTrigger RoutedEvent="PreviewMouseLeftButtonUp">
                                            <BeginStoryboard>
                                                <Storyboard>
                                                    <DoubleAnimation Storyboard.TargetName="mainBorder" Storyboard.TargetProperty="Opacity" To="0.3" Duration="0:0:0.3">
                                                        <DoubleAnimation.EasingFunction>
                                                            <CubicEase EasingMode="EaseOut"/>
                                                        </DoubleAnimation.EasingFunction>
                                                    </DoubleAnimation>
                                                </Storyboard>
                                            </BeginStoryboard>
                                        </EventTrigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Button.Style>
                <Image x:Name="visibilityImage" Source="/Resources/Image/invisible.png" Margin="3" FocusVisualStyle="{x:Null}"/>
            </Button>
        </Grid>
    </Border>
</UserControl>