具有动态高度的列表框项(“auto”不起作用)

时间:2012-12-04 02:35:24

标签: c# wpf windows-phone-7

我有一个listBox,我从一些收藏中填写。每个集合项都有一些信息:静态名称和图片,以及动态内容(文本,照片或照片等)。我想为每个集合项更改列表框的项高度。高度取决于内容,如果它只有文本 - 列表框的项必须有静态(名称的文本块,图片的图片)和带文本的文本块,文本块的高度必须根据文本更改(如果它的2-3个字符串高度将是min,如果文本适合15-20个字符串 - textblock的高度必须更改accordind到字符串),如果集合项包括文本和图像 - 它必须具有静态(名称的文本块,图片的图像),文本的文本块和图像对于图像。列表框项目的高度必须取决于文本块大小和图像大小。

目前,我有一个列表框,其中包含静态项目的高度,并希望高度动态。

这是我的列表框项目之一,它有一个ptoto

<local:NewsTemplateSelector.Photo>
    <DataTemplate>
        <Border BorderBrush="Red" BorderThickness="2"  Width="400" Height="auto" Margin="10">
            <StackPanel Orientation="Horizontal" Width="400" Height="auto">
                <Image Source="{Binding SourceImage}" Height="75" Width="75" Margin="0,-225,0,0" />
                <Canvas Width="400">
                    <TextBlock Text="{Binding SourceName}" Foreground="Black" FontSize="25" TextWrapping="Wrap" Height="55" Width="326" d:LayoutOverrides="VerticalAlignment, Height" />
                    <Image  Source="{Binding Photo[0].Big}" Height="auto" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="326" Canvas.Top="69"/>
                </Canvas>
            </StackPanel>
        </Border>
    </DataTemplate>
</local:NewsTemplateSelector.Photo> 

这里是带文字的模板

<local:NewsTemplateSelector.Texts>
    <DataTemplate>
        <StackPanel Orientation="Horizontal" Background="YellowGreen" Width="400" Height="300" >
            <Image Source="{Binding SourceImage}" Height="75" Width="75" Margin="0,-225,0,0" />
            <Canvas Width="400">
                <TextBlock Text="{Binding SourceName}" FontSize="25" Foreground="Black" TextWrapping="Wrap" Width="326" Height="65" d:LayoutOverrides="VerticalAlignment, Height"  />
                <TextBlock Text="{Binding Texts}"  Foreground="Black" FontSize="25" TextWrapping="Wrap" Height="229" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="326" Canvas.Top="69" />
            </Canvas>

        </StackPanel>
    </DataTemplate>
</local:NewsTemplateSelector.Texts>

我尝试使用自动 - 但项目的高度为0.如果我使用列表框项目下的字段颜色“红色”边框 - 我看到每个项目的红色线条,而不是项目的内容

1 个答案:

答案 0 :(得分:0)

请参阅本教程,了解如何使用模板选择器。 http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector