Windows Dev Center

Linguaggio: HTML | XAML

Guida introduttiva: Aggiunta di controlli di input e modifica di testo (XAML)

Il framework XAML include vari controlli per l'immissione e la modifica del testo, nonché un set di proprietà per la formattazione del testo. I controlli per l'immissione del testo sono TextBox, PasswordBox e RichEditBox. Questa guida introduttiva spiega come usare questi controlli per visualizzare, immettere e modificare il testo.

Roadmap: che relazione c'è tra questo argomento e gli altri? Vedi:

Prerequisiti

In questa guida introduttiva si suppone che tu sia in grado di creare un'app di Windows Runtime di base che usi C++, C# o Visual Basic. Per istruzioni sull'aggiunta di un controllo, vedi Guida introduttiva: Aggiunta di controlli e gestione di eventi.

Scegliere un controllo del testo

Il framework XAML include tre controlli principali per l'immissione del testo, ovvero TextBox, PasswordBox e RichEditBox. Il controllo di testo da usare dipende dallo scenario specifico. Ecco alcuni scenari e il controllo consigliato.

ScenarioControllo consigliato

Immettere o modificare testo normale, ad esempio in un modulo.

TextBox

Immettere una password.

PasswordBox

Modificare un documento, un articolo o un blog che richiede formattazione, paragrafi, collegamenti ipertestuali o immagini incorporate.

RichEditBox

 

TextBox

Puoi usare un controllo TextBox per immettere e modificare testo non formattato. Puoi usare la proprietà Text per inserire e impostare il testo in un controllo TextBox. Ecco il codice XAML per un semplice controllo TextBox con la relativa proprietà Text impostata.


<TextBox  Height="35" Width="200" Text="Hello World!" Margin="20"/>

Ecco il controllo TextBox ottenuto da questo codice XAML.

Una semplice casella di testo.

Puoi fare in modo che un controllo TextBox sia di sola lettura impostando la proprietà IsReadOnly su true. Per immettere il testo in un controllo TextBox su più righe, imposta la proprietà TextWrapping su Wrap e la proprietà AcceptsReturn su true.

Puoi immettere o impostare il testo selezionato in un controllo TextBox usando la proprietà SelectedText. Usa l'evento SelectionChanged per eseguire un'operazione quando l'utente seleziona o deseleziona il testo.

Ecco un esempio delle proprietà e dei metodi usati. Quando selezioni il testo nel primo controllo TextBox, il testo selezionato viene visualizzato nel secondo controllo TextBox, che è di sola lettura. I valori delle proprietà SelectionLength e SelectionStart sono visualizzati in due classi TextBlock. A questo scopo viene usato l'evento SelectionChanged.


<TextBox x:Name="textBox1" Height="75" Width="300" Margin="10"
         Text="The text that is selected in this TextBox will show up in the read only TextBox below." 
         TextWrapping="Wrap" AcceptsReturn="True"
         SelectionChanged="TextBox1_SelectionChanged" />
<TextBox x:Name="textBox2" Height="75" Width="300" Margin="5" 
         TextWrapping="Wrap" AcceptsReturn="True" IsReadOnly="True"/>
<TextBlock x:Name="label1" HorizontalAlignment="Center"/>
<TextBlock x:Name="label2" HorizontalAlignment="Center"/>



// C#
private void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
{
    textBox2.Text = textBox1.SelectedText;
    label1.Text = "Selection length is " + textBox1.SelectionLength.ToString();
    label2.Text = "Selection starts at " + textBox1.SelectionStart.ToString();
}

Ecco il risultato di questo codice.

Testo selezionato in una casella di testo.

PasswordBox

Puoi immettere una sola riga di contenuto (senza ritorni a capo) in un controllo PasswordBox. L'utente non può visualizzare il testo immesso; vengono visualizzati solo i caratteri password che rappresentano il testo. Per specificare questo carattere password, puoi usare la proprietà PasswordChar; per specificare il numero massimo di caratteri che l'utente può immettere, puoi impostare la proprietà MaxLength.

Puoi ottenere il testo che l'utente ha immesso dalla proprietàPassword, in genere nel gestore dell'evento PasswordChanged.

Ecco il codice XAML per un controllo della casella della password che mostra l'aspetto predefinito del controlloPasswordBox. Quando l'utente immette una password, questa viene controllata per verificare se è il valore letterale "Password". Se è così, visualizziamo un messaggio per l'utente.


<PasswordBox x:Name="pwBox" Height="35" Width="200"
             MaxLength="8" PasswordChanged="pwBox_PasswordChanged"/>
           
<TextBlock x:Name="statusText" Margin="10" HorizontalAlignment="Center" />


// C#
private void pwBox_PasswordChanged(object sender, RoutedEventArgs e)
{
    if (pwBox.Password == "Password")
    {
        statusText.Text = "'Password' is not allowed as a password.";
    }
}

Ecco il risultato quando questo codice viene eseguito e l'utente immette la parola "Password".

Una casella della password.

Nelle app di Windows Store il controllo PasswordBox ha un pulsante integrato che l'utente può toccare o sul quale può fare clic per visualizzare il testo della password. Ecco il risultato dell'azione dell'utente. Quando l'utente rilascia il pulsante, la password viene di nuovo nascosta automaticamente.

Una casella della password con la password visibile.

Nelle app di Windows Phone Store il controllo PasswordBox ha un pulsante integrato che l'utente può toccare o sul quale può fare clic per visualizzare il testo della password.

Una casella della password di Windows Phone.

RichEditBox

Puoi usare un controllo RichEditBox per scrivere e modificare documenti RTF che contengono testo formattato, collegamenti ipertestuali e immagini. Puoi fare in modo che un controllo RichEditBox sia di sola lettura impostando la proprietà IsReadOnly su true.

Per impostazione predefinita, RichEditBox supporta il controllo dell'ortografia. Per disabilitare il controllo ortografia, imposta su False la proprietà IsSpellCheckEnabled. Per altre informazioni, vedi le Linee guida ed elenco di controllo per il controllo ortografia.

Puoi usare la proprietà Document di RichEditBox per recuperarne il contenuto. Il contenuto di RichEditBox è un oggetto Windows.UI.Text.ITextDocument, diversamente da controllo RichTextBlock che usa oggetti Windows.UI.Xaml.Documents.Block come contenuto. L'interfaccia ITextDocument consente di caricare e salvare il documento in un flusso, recuperare intervalli di testo, ottenere la selezione attiva, annullare e ripetere modifiche, impostare attributi di formattazione predefiniti e così via.

In questo esempio viene illustrato come caricare e salvare un file RTF (Rich Text Format) in un controllo RichEditBox.


<Grid Margin="120">
    <Grid.RowDefinitions>
        <RowDefinition Height="50"/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <StackPanel Orientation="Horizontal">
        <Button Content="Open file" Click="OpenButton_Click"/>
        <Button Content="Save file" Click="SaveButton_Click"/>
    </StackPanel>
            
    <RichEditBox x:Name="editor" Grid.Row="1"/>
</Grid>


private async void OpenButton_Click(object sender, RoutedEventArgs e)
{
    // Open a text file.
    Windows.Storage.Pickers.FileOpenPicker open =
        new Windows.Storage.Pickers.FileOpenPicker();
    open.SuggestedStartLocation =
        Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;
    open.FileTypeFilter.Add(".rtf");

    Windows.Storage.StorageFile file = await open.PickSingleFileAsync();

    if (file != null)
    {
        Windows.Storage.Streams.IRandomAccessStream randAccStream =
            await file.OpenAsync(Windows.Storage.FileAccessMode.Read);

        // Load the file into the Document property of the RichEditBox.
        editor.Document.LoadFromStream(Windows.UI.Text.TextSetOptions.FormatRtf, randAccStream);
    }
}

private async void SaveButton_Click(object sender, RoutedEventArgs e)
{
    if (((ApplicationView.Value != ApplicationViewState.Snapped) ||
          ApplicationView.TryUnsnap()))
    {
        FileSavePicker savePicker = new FileSavePicker();
        savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
        
        // Dropdown of file types the user can save the file as
        savePicker.FileTypeChoices.Add("Rich Text", new List<string>() { ".rtf" });
        
        // Default file name if the user does not type one in or select a file to replace
        savePicker.SuggestedFileName = "New Document";

        StorageFile file = await savePicker.PickSaveFileAsync();
        if (file != null)
        {
            // Prevent updates to the remote version of the file until we 
            // finish making changes and call CompleteUpdatesAsync.
            CachedFileManager.DeferUpdates(file);
            // write to file
            Windows.Storage.Streams.IRandomAccessStream randAccStream =
                await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

            editor.Document.SaveToStream(Windows.UI.Text.TextGetOptions.FormatRtf, randAccStream);

            // Let Windows know that we're finished changing the file so the 
            // other app can update the remote version of the file.
            FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);
            if (status != FileUpdateStatus.Complete)
            {
                Windows.UI.Popups.MessageDialog errorBox =
                    new Windows.UI.Popups.MessageDialog("File " + file.Name + " couldn't be saved.");
                await errorBox.ShowAsync();
            }
        }
    }
}

Usare la tastiera virtuale

La tastiera virtuale può essere usata per l'immissione del testo quando un'app viene eseguita su un dispositivo dotato di touchscreen. La tastiera virtuale compare quando l'utente tocca un campo di input modificabile, ad esempio TextBox o PasswordBox, e scompare quando il campo di input non è più attivo. La tastiera virtuale usa la funzionalità di accessibilità per determinare quando comparire e quando scomparire. Nei controlli del testo inclusi nel framework XAML sono incorporate le proprietà di automazione. Se crei i tuoi controlli del testo personalizzati, devi obbligatoriamente implementare TextPattern per poter usare la tastiera virtuale.

Riepilogo e passaggi successivi

Hai appreso come creare controlli TextBox, PasswordBox e RichEditBox per visualizzare e modificare testo nella tua app.

Per ulteriori esempi di codice che utilizzano questi controlli, vedi Esempio di modifica di testo con XAML.

Argomenti correlati

Linee guida ed elenco di controllo per l'input di testo
Linee guida ed elenco di controllo per il controllo ortografia
Roadmap per app di Windows Runtime scritte in C# o Visual Basic
Roadmap per app di Windows Runtime in C++

 

 

Mostra:
© 2015 Microsoft