Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, 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

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

Windows Phone: ListBox, DataTemplate e allineamento orizzontale degli elementi

In Windows Phone, quando popoliamo una ListBox con una collection, quindi attraverso la specifica di un DataTemplate, potremmo avere la necessità di visualizzare i vari elementi presentandoli ad una larghezza che riempia l'interno spazio disponibile.

In sostanza, questo è il comportamento di default, che però non ci piace:

Il risultato che ci piacerebbe ottenere, per uniformità, è il seguente (anche in considerazione di DataTemplate più complessi e composti):

Inutile impostare HorizontalAlignment="Stretch" su Listbox, DataTemplate e quant'altro. Non produrrebbe effetto.

La soluzione sta nel ridefinire il ContentPresenter della ListBox, con uno stile di questo tipo:

    <phone:PhoneApplicationPage.Resources>
        <Style TargetType="ListBoxItem" x:Key="ListboxStretchStyle">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </phone:PhoneApplicationPage.Resources>

Ovviamente potete piazzarlo nelle risorse a livello di applicazione, se dovete usarlo più volte. Lo stile si applica, poi, all'ItemContainerStyle in questo modo:

                <ListBox ItemsSource="{Binding}" Name="ElencoBox" 
                         ItemContainerStyle="{StaticResource ListboxStretchStyle}"
                         />

Per precisazione doverosa, la soluzione non è farina del mio sacco ma è stata reperita su Internet, se ne parla su StackOverflow e altri siti sparsi.

Alessandro

Print | posted on lunedì 18 marzo 2013 12:02 | Filed Under [ Silverlight e Windows Phone ]

Powered by:
Powered By Subtext Powered By ASP.NET