我有一个listBox,我从一些收藏中填写。每个集合项都有一些信息:静态名称和图片,以及动态内容(文本,照片或照片等)。我想为每个集合项更改列表框的项高度。高度取决于内容,如果它只有文本 - 列表框的项必须有静态(名称的文本块,图片的图片)和带文本的文本块,文本块的高度必须根据文本更改(如果它的2-3个字符串高度将是min,如果文本适合15-20个字符串 - textblock的高度必须更改accordind到字符串),如果集合项包括文本和图像 - 它必须具有静态(名称的文本块,图片的图像),文本的文本块和图像对于图像。列表框项目的高度必须取决于文本块大小和图像大小。
目前,我有一个列表框,其中包含静态项目的高度,并希望高度动态。
这是我的列表框项目之一
<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>
UPD:尝试
<local:NewsTemplateSelector.Photo>
<DataTemplate>
<Border
BorderBrush="Red"
BorderThickness="2"
Width="auto"
Height="auto"
Margin="10">
<Canvas Width="auto">
<Image
Source="{Binding SourceImage}"
Height="auto"
Width="auto"
HorizontalAlignment="Stretch" />
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding SourceName}"
Foreground="Black"
FontSize="25"
TextWrapping="Wrap"
Height="auto"
Width="auto"
MaxHeight="300"
MaxWidth="460" />
<TextBlock
HorizontalAlignment="Stretch"
Text="{Binding Texts}"
Foreground="Black"
FontSize="25"
TextWrapping="Wrap"
Height="auto"
Width="auto"
MinHeight="150"
MaxHeight="300"
MaxWidth="460" />
<Image
HorizontalAlignment="Stretch"
Source="{Binding Photo[0].Big}"
Height="auto"
MinHeight="150"
MaxHeight="300"
MaxWidth="460"
Width="auto"/>
</Canvas>
</Border>
</DataTemplate>
</local:NewsTemplateSelector.Photo>`
但相互叠加的照片和名称为SourseImage的图片也叠加在屏幕顶部
答案 0 :(得分:0)
您可以在xaml代码中使用“自动”值列表框的高度
<ListBox Height="auto">
</ListBox>
答案 1 :(得分:0)
尝试将所有硬编码属性替换为auto,例如height = auto和width = auto。
如果要填充总行,请使HorizontalAlignment =:stretch“。
根据需要将textblock属性TextWrapping =“wrap”和MinWidth固定为。