2011-05-31 13 views
12

Tengo una cuadrícula como la plantilla de datos para elementos en un cuadro de lista y no está ocupando todo el ancho del control. He todas las sugerencias de las otras preguntas, pero no están trabajando:Rellenar ancho de cuadrícula dentro de un cuadro de lista

Este es el xaml cuadro de lista

<ListBox ItemsSource="{Binding AccessControl.Credentials}" >      
           <ListBox.ItemTemplate> 
          <DataTemplate> 
            <Grid > 
             <Grid.ColumnDefinitions> 
              <ColumnDefinition Width="*"/> 
              <ColumnDefinition Width="*"/> 
              <ColumnDefinition Width="*"/> 
              <ColumnDefinition Width="*"/> 
              <ColumnDefinition Width="Auto"/> 
             </Grid.ColumnDefinitions> 
             <Grid.RowDefinitions> 
              <RowDefinition/> 
              <RowDefinition/> 
              <RowDefinition/> 
             </Grid.RowDefinitions> 

             <Label Grid.Column="0" Grid.Row="0">Name</Label> 
             <Label Grid.Column="0" Grid.Row="1">Attribute</Label> 
             <Label Grid.Column="2" Grid.Row="1">Value</Label> </Grid> 
          </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 

y estoy usando un archivo de tema del siguiente proyecto: http://wpfthemes.codeplex.com/ aquí es la parte pertinente:

<Style TargetType="{x:Type ListBox}"> 
    <Setter Property="SnapsToDevicePixels" Value="true" /> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> 
    <Setter Property="ScrollViewer.CanContentScroll" Value="True" /> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    <Setter Property="VerticalContentAlignment" Value="Center" /> 
    <Setter Property="FontFamily" Value="Trebuchet MS" /> 
    <Setter Property="FontSize" Value="12" /> 
    <Setter Property="BorderBrush" Value="{DynamicResource ControlBorderBrush}" /> 
    <Setter Property="BorderThickness" Value="1" /> 
    <Setter Property="Padding" Value="1" /> 
    <Setter Property="IsTabStop" Value="False" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ListBox}"> 
       <Grid> 
        <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" Background="{DynamicResource ControlBackgroundBrush}"> 
         <ScrollViewer Margin="1" Focusable="false" Foreground="{TemplateBinding Foreground}"> 

          <StackPanel Margin="2" IsItemsHost="true" /> 

         </ScrollViewer> 
        </Border> 
        <Border x:Name="DisabledVisualElement" IsHitTestVisible="false" Background="#A5FFFFFF" BorderBrush="#66FFFFFF" BorderThickness="1" Opacity="0" /> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Opacity" TargetName="DisabledVisualElement" Value="1" /> 
        </Trigger> 
        <Trigger Property="IsGrouping" Value="true"> 
         <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

¿Echo de menos algo?

Respuesta

20

Usted necesita hacer la ListBoxItems estirar su contenido, ya sea cambiando la propiedad respectiva de la ListBox:

<ListBox HorizontalContentAlignment="Stretch" ...> 

... o mediante el establecimiento de los artículos a través de la ItemContainerStyle:

<ListBox.ItemContainerStyle> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    </Style> 
</ListBox.ItemContainerStyle> 

De manera predeterminada, ambas funcionarán, ya que el estilo predeterminado ListBoxItem vincula la propiedad HorizontalContentAlignment a la propiedad propietaria ListBox's.

+0

¡perfecto! gracias – Marcom

+0

+1 Así que me parece que al final de una hora buscando cómo obtener una cuadrícula en un ListBox para llenar el espacio, bajando por el agujero del conejo que es el tamaño compartido de la cuadrícula y el tamaño de la estrella en vano. –

Cuestiones relacionadas