2013-05-30 27 views
8

Tôi có một ListView có một mẫu dữ liệu dựa trên một lưới. XAML như sau:Tạo một ô lưới trong một mục ListView ItemTemplate điền

<ListView ItemsSource="{Binding SomeItemSource}" HorizontalAlignment="Stretch" Height="281"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid HorizontalAlignment="Stretch" Margin="3" Width="Auto"> 
       <Grid.RowDefinitions> 
        <RowDefinition></RowDefinition> 
        <RowDefinition></RowDefinition> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="70"></ColumnDefinition> 
        <ColumnDefinition Width="*"></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
       <!-- Grid content here --> 
       <TextBlock Text="SomeTextbox" 
          Margin="5,5,0,0"/> 

       <TextBox Grid.Column="1" 
         Margin="0,5,0,0" 
         Text="{Binding SomeProperty, Mode=TwoWay}" 
         HorizontalAlignment="Left" 
         Width="90"/> 

       <TextBlock Text="AnotherText" 
          Grid.Column="0" 
          Grid.Row="1" 
          Margin="5,5,0,0"/> 

       <TextBox Grid.Column="1" Grid.Row="1" 
         Margin="0,5,0,0" 
         Text="{Binding AnotherProperty, Mode=TwoWay}" 
         HorizontalAlignment="Stretch" 
         Width="300"/> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Những gì tôi muốn, là cho lưới điện để lấp đầy (căng lên) toàn bộ chiều rộng ngang của ListView phụ huynh, tuy nhiên nó hiện kết thúc tốt đẹp với độ rộng của tổng của nội dung của nó. Làm thế nào tôi có thể đạt được hành vi mà tôi muốn?

Trả lời

16

Bạn cần đặt ListViewItem.HorizontalContentAlignment thành Stretch. Thử thêm này vào định nghĩa ListView của bạn:

<ListView.ItemContainerStyle> 
    <Style TargetType="{x:Type ListViewItem}"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    </Style> 
</ListView.ItemContainerStyle> 
+0

Perfect, nhờ :) – havardhu

1
<ListView Name="Husam_Copy" HorizontalAlignment="Left" Height="181" Margin="60,86,0,0" VerticalAlignment="Top" Width="189" > 
     <ListView.ItemContainerStyle> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
       <Setter Property="Padding" Value="0"/> 
       <Setter Property="Margin" Value="0"/> 
       <Setter Property="BorderThickness" Value="0"/> 
      </Style> 
     </ListView.ItemContainerStyle> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Button Content="{Binding Title}" HorizontalAlignment="Stretch" Padding="0" Margin="0" /> 
      </DataTemplate> 
     </ListView.ItemTemplate> 


    </ListView> 
+0

Đề xuất cũng để gửi những gì bạn đã thay đổi để khắc phục vấn đề. –