如何在ObservableCollection填充时更改视图中的图像大小

时间:2013-08-01 02:44:20

标签: image windows-phone-7 xaml binding windows-phone-8

我有一个由ObservableCollection填充的图像列表。这是通过将ListBox的ItemsSource绑定到后面的代码中的Collection来完成的。尽管结果的图像列表看起来不漂亮,但一切都正常。目前,图像被包裹在一个水平的WrapPanel中,这是我想保留的功能。但问题在于,取决于图像是从LandscapeCaptureTask拍摄的是横向还是纵向模式,在视图中显示时,它要么非常宽,要么很高。我希望能够在保持纵横比的同时调整这些图像的大小。也许在宽度或高度上设置一个不超过128的限制。我将在下面的代码中如何做到这一点?此外,图像是否可以保持纵横比?例如,肖像图像是否知道最大高度为128,同时保持宽度小于128以保持纵横比?

MainPage.xaml中

<ListBox x:Name="Recent" ItemsSource="{Binding}" Margin="8"
                     SelectionChanged="recent_SelectionChanged" toolkit:TiltEffect.IsTiltEnabled="True"
                     ItemContainerStyle="{StaticResource MyStyle}">
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
            </ListBox>

1 个答案:

答案 0 :(得分:0)

您可以将ItemTemplate设置为@tanuj_loop建议,但我建议您也可以将该项目嵌入ViewBox并对其应用尺寸更改,而不是直接应用于图片,以确保您保留图像的分辨率,但得到你所追求的尺寸限制,所以像;

<ListBox.ItemTemplate>
   <DataTemplate>
    <ViewBox MaxHeight="128" MaxWidth="128">
            <Image Source="{Binding }"/>
        </ViewBox>                                    
   </DataTemplate>
</ListBox.ItemTemplate>

通过这种方式,您的ViewBox会为您处理所有可能的调整大小问题,并且您的图片仍然可以像您想要的那样清晰。

希望这有帮助。