2010-01-17 7 views
2

ayant le code de WPF suivant:[WPF] Comment régler la largeur et la hauteur d'une grille qui se trouve dans une matrice de données

<Window x:Class="WpfApplication5.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:c="clr-namespace:WpfApplication5" 
Title="Window1" Height="300" Width="300"> 
<Window.Resources> 
    <c:Places x:Key="PlacesData"/> 
    <DataTemplate x:Key="DataTemplate" DataType="{x:Type c:Place}"> 
     <Grid HorizontalAlignment="Left" 
       > 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="40"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Grid.Column="0" Text="{Binding Name}"/> 
      <TextBlock Grid.Column="1" Text="{Binding State}" TextAlignment="Right"/> 
     </Grid> 
    </DataTemplate> 
</Window.Resources> 
<Grid> 
    <ListBox ItemsSource="{Binding Source={StaticResource PlacesData}}" 
      ItemTemplate="{StaticResource DataTemplate}" 
      ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
      ScrollViewer.CanContentScroll="False" 
      HorizontalContentAlignment="Stretch"/> 
</Grid> 

La sortie est cette alt text http://img51.imageshack.us/img51/3977/listboxscreenshot.jpg

Je veux que le code d'état à afficher toujours dans le côté droit de la liste et cela doit arriver aussi si je redimensionne la fenêtre.

Des idées?

Répondre

2

Assurer la HorizontalContentAlignment de chaque ListBoxItem est réglé sur Stretch:

<ListBox> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+0

Je ne fonctionne pas. Le même problème – Alin

2

Faites votre grille de HorizontalAlignmentStretch, pas Left.

<DataTemplate x:Key="DataTemplate" DataType="{x:Type c:Place}"> 
    <Grid HorizontalAlignment="Stretch"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="40"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Grid.Column="0" Text="{Binding Name}"/> 
     <TextBlock Grid.Column="1" Text="{Binding State}" TextAlignment="Right"/> 
    </Grid> 
</DataTemplate> 
+0

Thx Adam. Votre solution fonctionne – Alin

+3

Mon plaisir. Bien que je devrais demander pourquoi vous avez marqué l'autre réponse comme réponse correcte :) –