具有水平对齐的可调整大小对象的ListBox

时间:2012-12-20 16:52:22

标签: c# wpf xaml

我有一组水平对齐的图像。包含ListBox完全填充父控件。现在,通过调整父控件的大小来调整图像的大小。我认为ListBoxItem dosn调整自己的高度以适应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>

2 个答案:

答案 0 :(得分:3)

StackPanel中的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>

答案 1 :(得分:2)

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

<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" ...>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>                
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding PageThumbnail}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>