我有一个ListBox,它在它上面显示一个Image和一个Text。我已将DataTemplate绑定到具有字符串Str
和图像Image
的自定义MyImage类。由于周围的StackPanel是水平的,因此下一个图像将出现在第一个图像的右侧。
我在将图像的高度设置为填充整个ListBox的高度减去文本的高度和边距的值时遇到问题。
在下面的代码中,我将它绑定到ListBox listboxMyImages
的ActualHeight。
我希望能够从该值中减去TextBlock的高度。最好的方法是什么?
<ListBox x:Name="listboxMyImages" Margin="10,10,10,10">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:MyImage}">
<StackPanel>
<TextBlock x:Name="lblMyImage" Margin="3" Text="{Binding Str}" />
<Image Margin="3" Source="{Binding Image}" Height="{Binding ElementName=listboxMyImages, Path=ActualHeight }"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:0)
您可以尝试使用这样的网格,而不是使用StackPanel:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*">
<RowDefinition Height="Auto">
</Grid.RowDefinitions>
</Grid>
不确定它是否有效,因为我现在无法尝试。
答案 1 :(得分:0)
使用另一个小组 - Grid
有2行
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock x:Name="lblMyImage" Margin="3" Text="{Binding Str}" />
<Image Grid.Row="1" Margin="3" Source="{Binding Image}"/>
</Grid>
图像将拉伸并获取所有可用的高度