2

我有一组水平对齐的图像。包含ListBox完全填充父控件。现在应该通过调整父控件的大小来调整图像的大小。我认为ListBoxItemdos 不会调整自己的高度以适应ListBox.

我的 ListBox 代码

<ListBox ItemsSource="{Binding Path=Pages}"
         VerticalContentAlignment="Stretch"
         KeyboardNavigation.IsTabStop="False"
         Height="Auto" MinHeight="120">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding Path=PageThumbnail}" Stretch="Uniform/>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
4

2 回答 2

3

StackPanelin替换为ItemsPanelTemplate

<UniformGrid Rows="1"/>

然后将此属性添加到您的ListBox

HorizontalContentAlignment="Stretch"

编辑:发布示例,未应用任何项目绑定。

<Grid>
    <ListBox 
     VerticalContentAlignment="Stretch"
     HorizontalContentAlignment="Stretch"
     KeyboardNavigation.IsTabStop="False">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Rows="1"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <Image Source="o0.gif" Stretch="Uniform"/>
        <Image Source="o1.gif" Stretch="Uniform"/>
        <Image Source="o2.gif" Stretch="Uniform"/>
    </ListBox>
</Grid>
于 2012-12-20T17:34:55.087 回答
2

诀窍就是禁用 ListBox 的垂直 ScrollBar。无需设置任何HorizontalContentAlignmentor VerticalContentAlignment。也不需要Stretch="Uniform"在 Image 控件上设置,因为这是默认值。

<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" ...>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>                
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding PageThumbnail}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
于 2012-12-20T17:25:52.790 回答