缩放WPF ListBox中的图像

时间:2012-01-27 14:11:06

标签: wpf image listbox scaling itemscontrol

我已经开始使用SO WPF: arranging collection items in a grid中的示例开发代码了。现在,为了获得单元格选择功能,我将每个ItemsControl重命名为ListBox,因为ListBox是一个ItemsControl(XAMl有点简化):

<ListBox  HorizontalContentAlignment="Stretch"  VerticalContentAlignment="Stretch" ItemsSource="{Binding YourItems}"> 
<ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
        <Grid/> 
    </ItemsPanelTemplate> 
</ListBox.ItemsPanel> 
<ListBox.ItemContainerStyle> 
    <Style> 
        <Setter Property="Grid.Column" Value="{Binding X}"/> 
        <Setter Property="Grid.Row" Value="{Binding Y}"/> 
    </Style> 
</ListBox.ItemContainerStyle> 
       <ListBox.ItemTemplate>
            <DataTemplate>
                <Image RenderOptions.BitmapScalingMode="LowQuality" Source="{Binding  ...ImageSource, Mode=OneWay}">
                </Image>
            </DataTemplate>
        </ListBox.ItemTemplate>

网格基于代码here填充了字形运行测试图像。

令人惊讶的是它有效 - 有点像。选择工作。但是,在ItemsControl的情况下,没有滚动条。一切都很好。当我使窗口变小时,网格单元缩小,图像也缩小。当我把窗户放大时,所有东西都缩小了。

现在,ListBox并非如此。图像大小保持不变。如果窗口不够大,则有一个水平滚动条,当窗口不够大时,一些图像被隐藏,用户需要向右滚动。

所以,我的问题是:如果ListBox是一个ItemControl,为什么我的图像不能同样缩放?我该怎么做才能纠正它?

1 个答案:

答案 0 :(得分:1)

这是因为ListBox和ItemsControl使用不同的样式。您可以轻松地将ItemControl的默认样式应用于ListBox:

<ListBox Style="{StaticResource ResourceKey={x:Type ItemsControl}}">