Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 使用ObservableCollection填充时如何更改视图中图像的大小_Image_Windows Phone 7_Xaml_Binding_Windows Phone 8 - Fatal编程技术网

Image 使用ObservableCollection填充时如何更改视图中图像的大小

Image 使用ObservableCollection填充时如何更改视图中图像的大小,image,windows-phone-7,xaml,binding,windows-phone-8,Image,Windows Phone 7,Xaml,Binding,Windows Phone 8,我有一个图像列表,它由一个ObservableCollection填充。这是通过将ListBox的ItemsSource绑定到代码隐藏中的集合来完成的。一切都正常工作,尽管结果的图像列表看起来并不漂亮。目前,图像被包装在水平包装中,这是我想要保留的功能。但问题是,根据图像是从CameraCaptureTask拍摄的,它是横向模式还是纵向模式,在视图中显示时,它要么非常宽,要么非常高。我想能够调整这些图像的大小,同时保持在机智的纵横比。可能设置宽度或高度限制不超过128。在下面的代码中,我将如何实

我有一个图像列表,它由一个ObservableCollection填充。这是通过将ListBox的ItemsSource绑定到代码隐藏中的集合来完成的。一切都正常工作,尽管结果的图像列表看起来并不漂亮。目前,图像被包装在水平包装中,这是我想要保留的功能。但问题是,根据图像是从CameraCaptureTask拍摄的,它是横向模式还是纵向模式,在视图中显示时,它要么非常宽,要么非常高。我想能够调整这些图像的大小,同时保持在机智的纵横比。可能设置宽度或高度限制不超过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>

你可以像@tanuj_loop建议的那样设置你的
ItemTemplate
,但我建议你也可以将项目嵌入
视图框
中,并对其应用大小更改,而不是直接对图像进行更改,以确保你保持图像的分辨率,但得到你想要的大小限制,比如

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

这样,您的
ViewBox
就可以为您处理所有可能的大小调整问题,并且您的图像仍然会像您希望的那样清晰


希望这能有所帮助。

一个问题中有很多问题。我只有建议供您参考。您可以为listview定义itemTemplate,并将其大小绑定到项目集合的项目类中定义的某些属性。这就是你如何实际操作图像项目的大小。我一定要试试这个。此外,如果我希望“裁剪”图像以显示中心,并根据这种情况下的纵横比剪切额外的宽度或高度,我将如何修改该实例的ViewBox参数?我认为ViewBox对裁剪没有多大帮助,如果要创建统一的所有内容,则需要查看WriteableBitmap/BitMapSource。有点像我看到的这里。我想我的问题是在执行裁剪过程时占用资源,因为我的应用程序可能在其集合中有数百或数千张图像。Viewbox方法是一种很好的方法,可以在不修改图像的情况下轻松修改尺寸,只要有一种方法可以执行相同的操作,但可以相应地剪裁图像的各个部分。我的最终目标是在列表框中显示大小为128x128的图像的正方形,以确保一致性和用户的享受。啊,我以前应该检查过,但显然
ViewBox
支持
Clip
几何体,因此从技术上讲,您可以使用
Clip
重新创建裁剪效果,以更好地满足您的需求:)