2009-07-25 74 views
6

我将驾驶一个触摸屏应用程序(而不是Web应用程序),需要向用户呈现图像组。希望呈现具有页面前进/后退能力的3x3网格图像。他们可以选择一些,然后我只展示这些图像。WPF图片库

我没有看到ListView确实是我想要的(虽然WPF足够大,我可能错过了明显的东西!)。我可以设置一个Grid并在网格位置填充图像。但我希望有更好的,更自动的,不太暴力的东西。任何想法或指针?

回答

7

您可能需要使用一个ItemsControl/ListBox然后设置一个UniformGrid面板一个3x3显示为ItemsPanel达到适当的WPF绑定解决方案。

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
     <UniformGrid Rows="3" Columns="3"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <Image Source="Images\img1.jpg" Width="100"/> 
    <Image Source="Images\img2.jpg" Width="50"/> 
    <Image Source="Images\img3.jpg" Width="200"/> 
    <Image Source="Images\img4.jpg" Width="75"/> 
    <Image Source="Images\img5.jpg" Width="125"/> 
    <Image Source="Images\img6.jpg" Width="100"/> 
    <Image Source="Images\img7.jpg" Width="50"/> 
    <Image Source="Images\img8.jpg" Width="50"/> 
    <Image Source="Images\img9.jpg" Width="50"/> 
</ListBox> 

如果您正在寻找动态解决方案,您需要将图像集合设置为ItemsSource绑定。但是这个问题太宽泛,无法给出确切的答案。

3

您可以使用简单的ListBox控件并自定义其ItemsPanel模板并在其中添加WrapPanelWrapPanel将项目置于水平平铺布局中,您可以在其中设置其最大宽度以将3个项目合并到一行中,并且它将为3个项目创建更多行,直到最后一个填充。

5

我知道这是一个非常古老的问题,但我正在回答,因为此页面位于Google的第一页,此链接可能对某人有用。

WPF Photo Viewer Demo

截图: Screenshot