在Phone7中去掉了listview控件,就只有这个listbox控件,不过这个控件功能非常强大,完全可以实现listview的功能。 因为这个控件也相当于一个容器,可以通过ListItem来组合多个控件而得到不同功能的list。
Xaml:
<ListBoxGrid.Row="1"Height="567"HorizontalAlignment="Left"Margin="12,53,0,0"Name="listBox1"VerticalAlignment="Top"Width="460">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanelOrientation="Horizontal">
<ImageSource="{BindingImgSource}"Width="130"Height="130"/>
<TextBlockText="{BindingName}"Foreground="Yellow"FontSize="25"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
//{Binding ImgSource}:动态绑定图片资源。
//{Binding Name}:动态绑定text文字。
源代码:
ImageListitem1 =newImageList();
item1.ImgSource =newBitmapImage(newUri("Images/Chrysanthemum.jpg",UriKind.Relative));
item1.Name ="Chrysanthemum.jpg";
list.Add(item1);
ImageListitem2 =newImageList();
item2.ImgSource =newBitmapImage(newUri("Images/Desert.jpg",UriKind.Relative));
item2.Name ="Desert.jpg";
list.Add(item2);
ImageListitem3 =newImageList();
item3.ImgSource =newBitmapImage(newUri("Images/Hydrangeas.jpg",UriKind.Relative));
item3.Name ="Hydrangeas.jpg";
list.Add(item3);
listBox1.ItemsSource = list;
<ListBoxHeight="605"HorizontalAlignment="Left"Margin="10,6,0,0"Name="listBox1"VerticalAlignment="Top"Width="460" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanelOrientation="Horizontal">
<ButtonContent="{BindingColorName}"Click="Button_Click"/>
<TextBlockx:Name="tb"Text="{BindingColorName}"FontSize="35"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
voidMainPage_Loaded(objectsender,RoutedEventArgse)
{
ColorItemcolor =newColorItem();
color.ColorName ="Red";
color.ColorValue =Colors.Red;
list.Add(color);
ColorItemcolor1 =newColorItem();
color1.ColorName ="Green";
color1.ColorValue =Colors.Green;
list.Add(color1);
ColorItemcolor2 =newColorItem();
color2.ColorName ="Blue";
color2.ColorValue =Colors.Blue;
list.Add(color2);
this.listBox1.ItemsSource = list;
}
privatevoidButton_Click(objectsender,RoutedEventArgse)
{
stringbutton = (senderasButton).Contentasstring;
intindex = 0;
stringcolor =string.Empty;
for(index=0; index<list.Count; index++)
{
if(button == list[index].ColorName)
{
color = list[index].ColorName;
break;
}
}
ListBoxItemlbi =this.listBox1.ItemContainerGenerator.ContainerFromIndex(index)asListBoxItem;
TextBlocktb = FindFirstVisualChild<TextBlock>(lbi,"tb");
tb.Foreground =newSolidColorBrush(list[index].ColorValue);
}