Search code examples
c#wpfxamlwindows-phone

XAML Strech TextBlock in Grid Colum


enter image description here

Each list item must be

  1. TextBlock 1 fill first row with 100% width;

  2. TextBlock 2,3,4 must fill 33% each on separate row;

Why TextBlock 2,3,4 not 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.

How i can add 1...x rows in list view in design time?


Solution

  • Use ListView.ItemContainerStyle

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