2013-05-21 3 views
2

Я изучаю этап в приложении XAML Metro Style. Я хочу создать простую страницу входа с элементом управления WatermarkTextBox следующим образом. Моя проблема в том, что я хочу установить водяной знак WatermarkTextBox (идентификатор электронной почты как текст пароля) по вертикали.WatermarkTextBox Управление с помощью XAML в приложении Metro Style

enter image description here

Моя XMAL строка кода следующим образом

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:Login" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:Controls="using:WinRTXamlToolkit.Controls" 
    x:Class="Login.MainPage" 
    mc:Ignorable="d"> 

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="163*"/> 
      <RowDefinition Height="101*"/> 
      <RowDefinition Height="112*"/> 
      <RowDefinition Height="114*"/> 
      <RowDefinition Height="116*"/> 
      <RowDefinition Height="162*"/> 
     </Grid.RowDefinitions> 
     <Controls:WatermarkTextBox WatermarkText="Email Id" HorizontalAlignment="Left" Margin="502,10,0,0" Grid.Row="1" VerticalAlignment="Center" Height="60" Width="433" FontFamily="Andalus" FontSize="18" Padding="10, 15, 0, 0"/> 
     <TextBox x:Name="PasswordWatermark" Text="Password" IsHitTestVisible="False" Grid.Row="2" FontSize="18" FontFamily="Andalus" Width="433" Height="60" Margin="502,0,425,52" Padding="10, 15, 0, 0"/> 
     <PasswordBox x:Name="pbPassword" LostFocus="PasswordLostFocus" GotFocus="PasswordGotFocus" Grid.Row="2" FontFamily="Andalus" FontSize="18" Margin="502,0,425,52" Opacity="0" Width="433" Height="60" Padding="10, 15, 0, 0"/> 
     <Button x:Name="btnLogin" Content="Login" HorizontalAlignment="Left" Margin="791,0,0,0" Grid.Row="3" VerticalAlignment="Top" Height="58" Width="147" FontFamily="Andalus" FontSize="18" Background="#FF385936" BorderBrush="#FF644F4F"/> 
    </Grid> 
</Page> 

.cs

private void PasswordLostFocus(object sender, RoutedEventArgs e) 
{ 
    CheckPasswordWatermark(); 
} 

private void CheckPasswordWatermark() 
{ 
    var passwordEmpty = string.IsNullOrEmpty(pbPassword.Password); 
    PasswordWatermark.Opacity = passwordEmpty ? 100 : 0; 
    pbPassword.Opacity = passwordEmpty ? 0 : 100; 
} 

private void PasswordGotFocus(object sender, RoutedEventArgs e) 
{ 
    PasswordWatermark.Opacity = 0; 
    pbPassword.Opacity = 100; 
} 

Ваша помощь является натереть оценить. Спасибо заранее.

ответ

0

Хорошо, я не использую Vs 2012, поэтому я не могу его протестировать. Я кодирую в блокноте. Но это может быть полезно:

<Controls:WatermarkTextBox WatermarkText="Email Id" HorizontalAlignment="Left" Margin="502,10,0,0" Grid.Row="1" 
    VerticalAlignment="Center" Height="60" Width="433" FontFamily="Andalus" FontSize="18" Padding="10, 15, 0, 0"> 
    <Controls:WatermarkTextBox.WatermarkTextStyle> 
     <Style TargetType="TextBlock"> 
      <Setter Property="VerticalAlignment" Value="Center" /> 
     </Style>    
    </Controls:WatermarkTextBox.WatermarkTextStyle>   
<Controls:WatermarkTextBox/> 

Если возможно, скажите мне результат.

+0

Сэр, я проверял его, но не работал! Пожалуйста, дайте любое другое решение. –

+0

Может быть, из-за заполнения? Cretae - новый пустой проект и добавьте элемент управления WatermarkTextBox. И протестируйте мое решение по этому проекту. Посмотрите, если это то, что вам нужно. А потом скажите мне результат. Благодарю. –

+0

Сэр, когда я отправляю текст в текстовое поле, текст вводится в центр, но текст с водяными знаками (например, идентификатор электронной почты) не помещается в вертикальный центр. Пожалуйста, помогите мне. Спасибо за ответ. –

0

Возможно, я ошибаюсь, но текстовое поле содержит свойства VerticalContentAlignment и HorizontalContentAlignment.

Это те, которые указывают, как выровнять текст внутри них.

Смежные вопросы