2

水平方向に配置された画像のコレクションがあります。包含ListBoxは、親コントロールを完全に満たします。これで、親コントロールのサイズを変更して、画像のサイズを変更する必要があります。ListBoxItemのサイズに合わせて高さを変更しないでください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

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>
于 2012-12-20T17:34:55.087 に答える
2

秘訣は、リストボックスの垂直スクロールバーを無効にすることです。HorizontalContentAlignmentまたはを設定する必要はありません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 に答える