Silverlight WrapPanel儿童

0 c# silverlight json wrappanel

在silverlight中将子项添加到WrapPanel的最佳方法是什么?我正在使用C#,我正在读取包含缩略图和相关信息的图像的JSON对象.

最终目标是有一个缩略图网格(水平13个拇指横跨950像素×6个拇指垂直).

geo*_*tnz 7

当您面对在代码中添加项目时,通常会有更好的方法.

如何制作ListBox并将其ItemsSource设置为您的列表(或将其绑定到DataContext).创建一个DataTemplate以显示缩略图+信息然后(这是重要的部分)使用WrapPanel创建ItemsPanelTemplate.

<Grid x:Name="ImageThumbnails">
    <ListBox 
        ItemsSource="{Binding}" 
        Width="950"
        ScrollViewer.HorizontalScrollBarVisibility="Disabled"
        >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Vertical">
                    <Image Source="{Binding Thumbnail}" Width="80" Height="60"/>
                    <TextBlock Text="{Binding ImageName}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
     </ListBox>
</Grid>
Run Code Online (Sandbox Code Playgroud)

然后在您的代码中,一旦您从JSON调用中获取数据:

this.ImageThumbnails.DataContext = thumbnailListFromJSON;
Run Code Online (Sandbox Code Playgroud)

现在,如果您的列表是ObservableCollection,那么对列表的任何更改都将自动反映在您的UI中.

(上面的代码应该被视为伪代码 - 显然你将不得不改变它以反映你的数据结构)

编辑:将ScrollViewer.Horizo​​ntalScrollBarVisibility ="Disabled"添加到ListBox.这很重要,因为它会阻止滚动查看器在水平方向上无限扩展.如果没有这个WrapPanel就会成为1行列表框.