简体   繁体   中英

Dynamic height of StackPanel in ListBox custom ItemTemlate, WP8, C#, WPF

I'm programing app that will display data from RSS feed. I need just little view to show small image and description. I have custom ListBox with one stackPanel where is an and . Problem is: each item in that listbox has some height, but i need that height to change dynamically by the length of text and size of image.

There's my ListBox:

<ListBox x:Name="gui_listNovinky" SelectedIndex="-1" Height="500" VerticalAlignment="Top" ScrollViewer.VerticalScrollBarVisibility="Hidden" HorizontalContentAlignment="Stretch" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border BorderThickness="0,1,0,0" BorderBrush="Black" Margin="10">
                <StackPanel Name="stackpanel" Orientation="Horizontal" Height="500">
                    <StackPanel Width="435" Height="1000">
                        <Image Source="{Binding Image}" Height="200" Width="230" VerticalAlignment="Top"/>

                        <TextBlock Text="{Binding Description}" MaxHeight="290" FontSize="20" VerticalAlignment="Top" Foreground="Black" TextWrapping="Wrap" />
                    </StackPanel>
                </StackPanel>
            </Border>
        </DataTemplate>

    </ListBox.ItemTemplate>
</ListBox>

And there is how it look like. You can see that annoying free space below the image and the text. So ugly... :(

img

I will so thankful for solution. :)

PS: If there is mistakes in my English, dont be afraid to ask and i will explain it. :)

Do not enforce size inside data template. Modified DataTemplate which will solve the problem.

<DataTemplate>
    <Border BorderThickness="0,1,0,0"
            BorderBrush="Black"
            Margin="10">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Image Source="{Binding Image}"
                    Height="200"
                    Width="230"
                    VerticalAlignment="Top" />
            <TextBlock Text="{Binding Description}"
                        MaxHeight="290"
                        FontSize="20"
                        Grid.Row="1"
                        VerticalAlignment="Top"
                        Foreground="Black"
                        TextWrapping="Wrap" />
        </Grid>
    </Border>
</DataTemplate>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM