2011-05-31 22 views
12

Liste kutusundaki öğeler için veri tablosu olarak bir ızgaram var ve bu, denetimin tüm genişliğini doldurmuyor. Ben diğer sorular önerileri denedi ama çalışmıyor:Bir liste kutusunun içinde Izgara genişliğini doldurun

Bu liste xaml

<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> 

ve ben şu projeden bir tema dosyası kullanıyorum: Burada http://wpfthemes.codeplex.com/ ilgili parçasıdır:

<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> 

Bir şey mi özledim? ... ya ItemContainerStyle aracılığıyla öğeleri ayarlayarak

<ListBox HorizontalContentAlignment="Stretch" ...> 

:

cevap

20

Sen de ListBox üzerindeki ilgili özelliğini değiştirerek ListBoxItems içeriklerini germek yapmak gerekir

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

Varsayılan olarak, her ikisi de varsayılan stili olarak özelliğine sahip olarak ListBox's özelliğine bağlanır.

+0

Mükemmel! Teşekkürler – Marcom

+0

+ 1 Bu yüzden bir liste sonunda bir boşluk doldurmak için bir liste kutusu bir ızgara elde etmek için arama, bir kılavuz sonunda paylaşılan boyutlandırma ve hiçbir boyutta yıldız boyutlandırma tavşan delik aşağı gidiyor. –

İlgili konular