2010-10-11 38 views
1

需要Silverlight for Windows Phone的ListBox DataBindg帮助。代码如下:如何在Silverlight for Windows Phone7中绑定ListBox的数据列表

1)在页面加载事件:

注:图片是图片的收集,PicNames是图片的名称的集合。

var ml = new MediaLibrary(); 
var ChkPics = ml.Pictures; 
var PicNames = from p in ChkPics 
       where p.Name.Contains("s") 
       select p; 

2)静态类

public static class PhotoNames 
{ 
    private static List<string> m_Photoname = new List<string>(); 

    public static List<string> PhotoFileNames 
    { 
     get 
     { 
      return m_Photoname; 
     } 
     set 
     { 
      m_Photoname = value; 
     } 
    } 
} 

让所有的照片文件名中PicNames以这种方式后:

在页面加载事件:

var ml = new MediaLibrary(); 
var ChkPics = ml.Pictures; 
var PicNames = from p in ChkPics 
       where p.Name.Contains("s") 
       select p; 

foreach (var pic in PicNames) 
{ 
    PhotoNames.PhotoFileNames.Add(pic.Name); 
} 

我如何将一个ListBox绑定到这个静态类并在ListBox中显示TextBlock中的所有数据?

谢谢。

回答

0

它看起来像ml.Pictures有你需要的所有信息(名称和图片)。为什么你需要静态类?

你可以做到以下几点:

var ml = new MediaLibrary(); 
listBox.ItemSource = ml.Pictures.Where(picture => picture.Name.Contains("s")); 

而在你的XAML:

<UserControl.Resources> 
    <local:ImageConverter x:Key="ImageConverter"></local:ImageConverter> 
... 
</UserControl.Resources> 

<ListBox x:Name="listBox"> 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="120"></ColumnDefinition> 
       <ColumnDefinition Width="35"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 

      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"></RowDefinition> 
      </Grid.RowDefinitions> 

      <TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding Name}"></TextBlock> 
      <Image Grid.Column="1" Grid.Row="0" Source="{Binding Picture, Converter={StaticResource ImageConverter}}"></Image> 
     </Grid> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

模板同时显示了图片的文件名和缩略图图片本身,如果你不需要图片,而是使用DisplayMemberPath。

<ListBox x:Name="listBox" DisplayMemberpath="Name"> 
</ListBox> 


/// <summary> 
/// Converts an image path to the associated image. 
/// </summary> 
public class ImageConverter : IValueConverter 
{ 
    #region IValueConverter implementation 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string imagePath = (string)value; 
     Uri Uri = new Uri(imagePath, UriKind.Relative); 
     return new BitmapImage(Uri); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

它部分作为无图片显示。基于此var ml = new MediaLibrary(); (图片=> picture.Name.Contains(“s”)); – MilkBottle 2010-10-11 09:18:02

+0

图片未显示。基于Where语句。我对XAML进行了更改:图片到图片或图片。 – MilkBottle 2010-10-11 09:20:32

+0

未显示图片。基于Where语句。我对XAML进行了更改:图片到图片或图片。 – MilkBottle 2010-10-11 09:20:34

相关问题