Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WPF: TextBox con sfondo a gradiente circolare

Mi sto divertendo a sperimentare coi gradienti sui vari controlli di Windows Presentation Foundation. Oggi ho provato con una TextBox, aggiungendo uno sfondo dal gradiente circolare e impostando le proprietà del testo.

Digitando il seguente codice XAML:

    <StackPanel>
         <TextBox Name="TextBox1" BorderBrush="Salmon" FontStyle="Italic" FontWeight="UltraBlack" 
                   BorderThickness="2" Text="Questa è una TextBox in WPF" 
                   FontFamily="Courier New" FontSize="14" Foreground="White" Margin="10,10,10,10"
                   TextChanged="TextBoxChanged"
                   >
            <TextBox.Background>
              <RadialGradientBrush>
                <GradientOrigin="0.5,0.5"
                <Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
                <RadialGradientBrush.GradientStops>
                  <GradientStop Color="Green" Offset="0" />
                  <GradientStop Color="Blue" Offset="0.25" />
                  <GradientStop Color="Yellow" Offset="0.75" />
                  <GradientStop Color="Red" Offset="1" />
                RadialGradientBrush.GradientStops>
              RadialGradientBrush>
            TextBox.Background>
          TextBox>
    StackPanel>

Si ottiene il risultato seguente :-) :

Sul codice XAML facciamo le seguenti considerazioni: abbiamo disegnato un bordo (BorderBrush e BorderThickness) intorno al controllo. Le proprietà del font sono impostate mediante gli attributi FontFamily (che corrisponde al nome del font), FontSize, FontStyle e FontWeight (quest'ultimo consente molte impostazioni sulla modalità grassetto del testo). Il colore del testo si imposta mediante l'attributo ForeGround. Abbiamo specificato che, quando l'utente cambia il contenuto della TextBox (attributo TextChanged), deve essere richiamato il gestore TextBoxChanged (di cui vedremo poi il codice).

Per quanto riguarda il gradiente, il funzionamento è simile al LinearGradientBrush che abbiamo visto precedentemente, con la differenza che vanno specificate le posizioni da cui devono partire i raggi. Se si entra nell'ottica "gerarchica" di XAML, se ne può apprezzare l'intuitività. Devo già ricredermi rispetto alle prime prove, quando lo trovavo macchinoso. Ora, invece, capisco molto meglio perchè è più facile affrontare la modalità design con XAML che non trascinando i controlli dalla toolbox.

Per quanto riguarda il file di code behind, implementiamo il gestore dell'evento TextChanged in questo modo:

VB:

    Private Sub TextBoxChanged(ByVal sender As Object, ByVal e As TextChangedEventArgs)
        Debug.WriteLine("L'utente ha digitato la stringa:" & TextBox1.Text)
    End Sub

C#:

        private void TextChanged(object sender, TextChangedEventArgs e)
        {
            Debug.WriteLine("L'utente ha digitato la stringa:" & TextBox1.Text);
        }

Così facendo, ogni qual volta viene modificato il contenuto della TextBox, nella finestra di debug viene mostrato un messaggio in cui si dice come il testo è stato modificato. Ovviamente, questo è solo un esempio dimostrativo... l'evento TextChanged può servire a ben altro, come voi mi insegnate! ;-) E aspetto sempre il volenteroso programmatore VB 6 che mi mostri qualcosa di analogo con poche righe di codice e nessun ActiveX :D :D

Alessandro

Print | posted on giovedì 19 luglio 2007 21:02 | Filed Under [ Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET