Accueil > Silverlight, WPF > [SL4–WPF] : HorizontalContentAlignment ListBox problem

[SL4–WPF] : HorizontalContentAlignment ListBox problem

Une petite astuce suite à une question d’un lecteur ayant un problème pour étirer un élément sur toute la largeur dans une ListBox.

Ceci est un bug présent dans Silverlight mais n’existe pas dans WPF.

Illustration du problème

Nous obtenons un alignement sur la gauche de notre ItemTemplate !

image

Alors que nous souhaiterions :

image

Base de code

XAML

        <UserControl x:Class="SilverlightApplication2.MainPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Grid Background="White">
        <ListBox ItemsSource="{Binding}">
            <!--ITEM TEMPLATE-->
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border BorderThickness="1"
                            BorderBrush="Blue"
                            Margin="5"
                            Padding="5">
                        <TextBlock Text="{Binding}" />
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>

CS

  public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            DataContext = new List<String>()
            {
                "A",
                "B",
                "C",
                "D",
                "E"
            };
        }
    }

Solution en WPF : une ligne !

La solution est de mettre HorizontalContentAlignment=”Strech” en attribut de la ListBox…

 <ListBox ItemsSource="{Binding}"
                 HorizontalContentAlignment="Stretch">
<!-- ... -->
                 </ListBox>

Solution en Silverlight

Redéfinir le style par défaut du ListBoxItem, qui ne contient cette notion pour le moment.

 <ListBox ItemsSource="{Binding}">
            <!--ITEM CONTAINER STYLE-->
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment"
                            Value="Stretch" />
                </Style>
            </ListBox.ItemContainerStyle>

            <!--...-->
           
        </ListBox>
Publicités
Catégories :Silverlight, WPF
  1. 8 février 2011 à 22 h 53

    Merci pour l’astuce. En espérant qu’il soit corrigé dans SL5 même si c’est pas trop gênant 😉

  1. No trackbacks yet.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s

%d blogueurs aiment cette page :