2010-10-11 78 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

相關問題