Сначала у меня есть текстовое поле, затем поле пароля, затем поле подтверждения пароля. Если я использую только вкладку для перемещения между этими полями, то первое текстовое поле не позволяет мне печатать что-либо, так как я не вижу на нем никакого курсора. Но для следующего пароля и подтверждения пароля я могу использовать вкладку для переключения, тип и курсор также видны. Я хочу, чтобы первое текстовое поле могло работать так же, как поле ввода пароля. Я использую XAML. Вот код Любая помощь будет полезна. Спасибо. PS: не работает с "****", который вы видите в коде.
TextBox x:Name="txtUsername"
TabIndex="1"
x:Uid="*****"
Tag="Username"
Style="{DynamicResource placeHolderMandatory}"
ctrl:PlaceHolderHelper.PlaceHolderText="Username *"
VerticalContentAlignment="Center"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Focusable="False"
IsTabStop="False"
KeyUp="credentialKeyUp"
Width="402" Margin="5,5,5.4,25" />
<PasswordBox x:Name="newPassword"
x:Uid="****"
TabIndex="2"
KeyUp="credentialKeyUp"
VerticalContentAlignment="Center"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="402" Margin="5,5,5.4,25"
ctrl:PasswordPlaceHolderHelper.PlaceHolderText="Password (must be atleast 8 characters in length)"
ctrl:PasswordPlaceHolderHelper.MandatoryPlaceHolderText="Password *"
Style="{DynamicResource PasswordPlaceHolder}"/>
<PasswordBox x:Name="confirmPassword"
x:Uid="*****"
TabIndex="3"
VerticalContentAlignment="Center"
HorizontalAlignment="Left"
KeyUp="credentialKeyUp"
VerticalAlignment="Top"
Width="402" Margin="5,5,5.4,25"
ctrl:PasswordPlaceHolderHelper.PlaceHolderText="Confirm Password"
ctrl:PasswordPlaceHolderHelper.MandatoryPlaceHolderText="Confirm Password *"
Style="{DynamicResource PasswordPlaceHolder}" />
, а код стиля: код стиля текстового поля:
<Style x:Key="placeHolderMandatory" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<TextBox Text="{Binding Path=Text,
RelativeSource={RelativeSource TemplatedParent},
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
x:Name="textSource"
Width="{TemplateBinding Width}" IsTabStop="False" Focusable="True"
Background="Transparent" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
Panel.ZIndex="3" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" MaxLength="{TemplateBinding MaxLength}"
Height="{TemplateBinding Height}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" TabIndex="{TemplateBinding TabIndex}" />
<TextBox Text="{TemplateBinding Tag}" Background="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Height="{TemplateBinding Height}"
BorderBrush="{DynamicResource TextBoxBorderColorBrush}" IsReadOnly="True" IsTabStop="False"
Width="{TemplateBinding Width}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" Panel.ZIndex="2" TabIndex="500">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="Transparent"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Text, Source={x:Reference textSource}}" Value="">
<Setter Property="Foreground" Value="Gray"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<TextBox Text="{TemplateBinding local:PlaceHolderHelper.PlaceHolderText}" VerticalAlignment="{TemplateBinding VerticalAlignment}"
Background="{TemplateBinding Background}" Panel.ZIndex="1" Height="{TemplateBinding Height}" IsReadOnly="True" IsTabStop="False"
BorderThickness="{TemplateBinding BorderThickness}" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" TabIndex="501">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="Transparent"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Text, Source={x:Reference textSource}}" Value="">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>