2015-09-25 27 views
0

enter image description hereXAML STRECH TextBlock的网格科拉姆

每个列表项必须是

  1. 的TextBlock 1填充第一行以100%的宽度;

  2. TextBlock 2,3,4必须在单独的行上填充33%;

为什么TextBlock 2,3,4没有strech?

<ListView.ItemTemplate><DataTemplate><StackPanel> 
    <TextBlock Text="{Binding Name}" /> 
    <Grid HorizontalAlignment="Stretch"> 
     <Grid.RowDefinitions> 
      <RowDefinition></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <TextBlock TextAlignment="Right" Grid.Row="0" Grid.Column="0" 
      HorizontalAlignment="Stretch" VerticalAlignment="Center" 
      Text="{Binding Rest}" FontSize="28"/> 
     <TextBlock TextAlignment="Right" Grid.Row="0" Grid.Column="1" 
      HorizontalAlignment="Stretch" VerticalAlignment="Center" 
      Text="{Binding Currency.Name}" FontSize="25"/> 
     <TextBlock TextAlignment="Right" Grid.Row="0" Grid.Column="2" 
      HorizontalAlignment="Stretch" VerticalAlignment="Center" 
      Text="{Binding FullRest}" FontSize="22"/> 
    </Grid> 
</StackPanel></DataTemplate></ListView.ItemTemplate> 

P.S.

如何在设计时添加1 ... x行的列表视图?

回答

1

使用ListView.ItemContainerStyle

<ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    </Style> 
</ListView.ItemContainerStyle> 
1

我用了一个列表框绑定在类似的方式我的数据。

你需要给StackPanel的具体宽度

而且你将不得不textwrapping属性设置为“无包装”

<ListBox x:Name="listbox" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Width="480"> 
         <TextBlock Text="{Binding main}" /> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition/> 
          <ColumnDefinition/> 
          <ColumnDefinition/> 
         </Grid.ColumnDefinitions> 
         <TextBlock TextWrapping="NoWrap" Text="{Binding one}"/> 
          <TextBlock TextWrapping="NoWrap" Text="{Binding two}" Grid.Column="1"/> 
         <TextBlock TextWrapping="NoWrap" Text="{Binding thr}" Grid.Column="2"/> 
        </Grid> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     </ListBox> 

这完全适用于我!