如何动态水平绑定数据
本文关键字:水平 绑定 数据 动态 何动态 | 更新日期: 2023-09-27 17:59:05
我正在开发windows phone 8应用程序,我想在Horizontal中的网格视图上显示图像。但它没有达到我想要的效果。
<phone:LongListSelector Name="DataSource" ItemsSource="{Binding Source}" SelectionChanged="DataSource_SelectionChanged">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid x:Name="gridNews">
<Grid.RowDefinitions>
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<Image Grid.Row="0" Grid.Column="0" Source="{Binding icon}" Stretch="Fill" Height="70" Width="70"></Image>
</Grid>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
这个结果:
image 1
image 2
image 3
image 4
....
但我想显示如下:
image 1 image 2 image 3
image 4.....
如果使用网格,则可能需要将每个图像放在网格的新"单元格"或部分中。要做到这一点,你需要添加网格列,然后使用网格将图像放在各自的网格中。column="#"
示例:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<Image grid.column="0" />
<Image grid.column="1" />
<Image grid.column="2" />
</Grid>
不过,我可能会建议使用堆叠面板。您可以将方向设置为水平,然后堆栈面板中的所有元素都将以水平方向显示。
示例:
<StackPanel Orientation="Horizontal" Height="100" Margin="0,0" VerticalAlignment="Top" Width="100">
<Image />
<Image />
<Image />
</StackPanel>
仔细想想,Wrap面板可能更适合你的手机应用程序,因为它会水平显示图像,然后在第一行满后开始新的一行。它的工作原理几乎与Stack Panel完全相同。
示例:
<WrapPanel Orientation="Horizontal" Height="100" Margin="0,0" VerticalAlignment="Top" Width="100">
<Image />
<Image />
<Image />
</WrapPanel>
我希望这能有所帮助!
您可以使用WPToolKit中的WrapPanel使数据以水平方式显示。
.Xaml:
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
<ListBox
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
//Binding data here
<Image Source={Binding img} />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在我的应用程序中,我在listbox中使用wrapPanel,我不确定它在longListSelector中是否有效。
这里有一个关于wrapPanel的好例子:http://www.geekchamp.com/articles/wp7-wrappanel-in-depth
希望能有所帮助。