2013-04-02 14 views

risposta

31

C'è il PhoneTextBox nello Windows Phone Toolkit ufficiale, coperto here.

codice di esempio:

<toolkit:PhoneTextBox Hint="Password"/> 

enter image description here

Per aggiungere toolkit al progetto: Digitare il seguente nel pacchetto console manager:
PM> Install-Package WPtoolkit
E

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 

all'interno <phone:PhoneApplicationPage tag nella pagina xaml

+1

grazie il suo utile. – John

+0

VerticalContentAlignment = "Top" non funziona? qualcuno sa come renderlo allineato in verticale in alto (il testo che è) – Jimmyt1988

+0

C'è un modo per mantenere il testo suggerimento quando la texbox riceve lo stato attivo ?? –

1

Non v'è alcuna proprietà segnaposto per TextBox. Io uso la seguente soluzione per aggirare questo per una casella di testo nome utente:

XAML:

<Grid> 
    <TextBlock Name="UsernamePlaceholder" Text="Username" /> 
    <TextBox Name="UsernameTextBox" Text="" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus"/> 
</Grid> 

Codice:

private void TextBox_GotFocus(object sender, RoutedEventArgs e) 
{  
    UsernamePlaceholder.Visibility = Visibility.Collapsed; 
} 

private void TextBox_LostFocus(object sender, RoutedEventArgs e) 
{ 
    if (sender is TextBox) 
    { 
     var textbox = sender as TextBox; 
     if (string.IsNullOrEmpty(textbox.Text)) 
     { 
      UsernamePlaceholder.Visibility = Visibility.Visible; 
     } 
    } 
} 

Questo sostituisce fondamentalmente la TextBox con un Grid-elemento, che contiene un TextBox e un TextBlock (che funziona come segnaposto). Quindi, quando la casella di testo è focalizzata, il blocco di testo è nascosto e quando perde la messa a fuoco il blocco di testo viene visualizzato se la casella di testo è vuota.

0

La mia soluzione è basata sulla risposta di PKENO

XAML (UserControl):

<UserControl x:Class="FestivalProject.Controls.TextBoxPH" 
      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"    
      mc:Ignorable="d"> 
    <TextBox x:Name="testTextBox" Margin="0" LostFocus="testTextBox_LostFocus" GotFocus="testTextBox_GotFocus"/> 
</UserControl> 

Codice dietro UserControl:

public partial class TextBoxPH : UserControl 
    { 
     private String _Text; 

     public String Text 
     { 
      get { return _Text; } 
      set { 
       _Text = testTextBox.Text = value;    
      } 
     } 



     private String _PlaceHolder; 
     public String PlaceHolder 
     { 
      get { return _PlaceHolder; } 
      set { 
       _PlaceHolder =testTextBox.Text = value;  
      } 
     }   

     public TextBoxPH() 
     {   
      InitializeComponent(); 
     } 

     private void testTextBox_LostFocus(object sender, RoutedEventArgs e) 
     { 
      if (string.IsNullOrEmpty(testTextBox.Text)) testTextBox.Text = PlaceHolder;    

     } 

     private void testTextBox_GotFocus(object sender, RoutedEventArgs e) 
     { 
      if (testTextBox.Text.Equals(PlaceHolder, StringComparison.OrdinalIgnoreCase)) testTextBox.Text = string.Empty; 

     } 
    } 

XAML (in finestra):

<txtPH:TextBoxPH Margin="5" Grid.ColumnSpan="2" PlaceHolder="PlaceholderText"/> 

Probabilmente non è il modo più efficiente, ma funziona.

0

Prova in questo modo qui di seguito il codice:

<TextBox x:Name="InvoiceDate" Text="" Width="300" TextAlignment="Left" Height="30" Grid.Row="0" Grid.Column="3" Grid.ColumnSpan="2" /> 
        <TextBlock IsHitTestVisible="False" Text="Men att läsa" Width="300" TextAlignment="Left" Height="30" Grid.Row="0" Grid.Column="3" Grid.ColumnSpan="2" Padding="5, 5, 5, 5" Foreground="LightGray"> 
         <TextBlock.Style> 
          <Style TargetType="{x:Type TextBlock}"> 
           <Setter Property="Visibility" Value="Collapsed"/> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding Text, ElementName=InvoiceDate}" Value=""> 
             <Setter Property="Visibility" Value="Visible"/> 
            </DataTrigger>          
           </Style.Triggers> 
          </Style> 
         </TextBlock.Style> 
        </TextBlock> 
Problemi correlati