2011-06-25 28 views
1

我試圖通過數據綁定檢索多個圖像和文本,但我只能設法檢索隔離存儲中的第一個文本(下面的代碼)。檢索隔離存儲中的文本的完整列表Windows Phone 7

是否有可能通過數據綁定到ListBox中檢索多個文本?

string imageFileName = App.imagePath; 

string a; 

object b; 
sting h; 

int i; 
string noteSeparate; 

private void Library_Loaded(object sender, RoutedEventArgs e) 
{ 


    if (MainListBox.Items.Count == 0) 
    { 

     //To save the separated note by '^' 
     string[] noteSeparated; 
     //Read the file and display it line by line. 
     IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); 
     //Read the note saved in myFile.txt 
     StreamReader readFile = new StreamReader(new IsolatedStorageFileStream("ViewFolder\\myFile.txt", FileMode.Open, myStore)); 

      try 
      { 

       String fileText = readFile.ReadLine(); 
       //noteSeparated is the variable that save the retrieve note from myFile.txt and is noteSeparated by '^' 
       noteSeparated = fileText.Split(new char[] { '^' }); 

       for (i = 0; i < noteSeparated.Length; i = i + 3) 
       { 
        noteSeparate = noteSeparated[i]; 
        a = noteSeparate; 
        break; 
       } 

       h = a; 
       readFile.Close(); 

      } 
      catch (Exception) 
      { 
       noNoteBlock.Visibility = Visibility.Visible; 
      } 
     } 

     string imageFolder = "imageFolder"; 

     var isoFile = IsolatedStorageFile.GetUserStoreForApplication(); 
     // Check if directory exists 
     if (!isoFile.DirectoryExists(imageFolder)) 
     { 
      //isoFile.CreateDirectory(imageFolder); 
      throw new Exception("Image directory not found"); 
     } 

     ObservableCollection<Items> LibraryItems = new ObservableCollection<Items>(); 
     // Get files 
     foreach (string fileName in isoFile.GetFileNames()) 
     { 
      //string filePath = Path.Combine(imageFolder, imageFileName); 
      string filePath = Path.Combine(imageFolder, fileName); 
      using (var imageStream = isoFile.OpenFile(filePath, FileMode.Open, FileAccess.Read)) 
      { 
       var imageSource = PictureDecoder.DecodeJpeg(imageStream); 

       BitmapImage bi = new BitmapImage(); 

       ListBoxItem item = new ListBoxItem(); 
       bi.SetSource(imageStream); 
       item.Content = new Image() { Source = bi, MaxHeight = 100, MaxWidth = 100, Margin = new Thickness(0, 0, 0, 20) }; 
       //MainListBox.Items.Add(item); 
       b = bi; 

      } 
      LibraryItems.Add(new Items(b, h)); 
      MainListBox.ItemsSource = LibraryItems; 
     } 
} 

任何人都可以幫助我檢索保存在獨立存儲中的所有文本。 孤立文件中的文本格式爲「noteTitle^note^imagePath^noteTitle^note^imagePath^....」等等..我試圖僅檢索所有noteTitle。

任何人都可以幫我獲得所有的noteTitle只有

回答

0

隨着Regex

using (var streamReader = new StreamReader(new IsolatedStorageFileStream("ViewFolder\\myFile.txt", FileMode.Open, myStore))) 
{ 
    var text = streamReader.ReadToEnd(); 
    var titles = Regex.Matches(text, @"(?<title>[^\^]+)\^(?<note>[^\^]+)\^(?<imagePath>[^\^]+)") 
     .Cast<Match>() 
     .Select(arg => arg.Groups["title"]) 
     .ToList(); 
} 

Split

using (var streamReader = new StreamReader(new IsolatedStorageFileStream("ViewFolder\\myFile.txt", FileMode.Open, myStore))) 
{ 
    var text = streamReader.ReadToEnd(); 
    var i = 0; 
    var titles = text.Split('^').Where(arg => i++ % 3 == 0).ToList(); 
} 

[編輯]要綁定的列表中ListBox

private void Library_Loaded(object sender, RoutedEventArgs e) 
{ 
    using (var streamReader = new StreamReader(new IsolatedStorageFileStream("ViewFolder\\myFile.txt", FileMode.Open, myStore))) 
    { 
     var text = streamReader.ReadToEnd(); 
     var i = 0; 
     MainListBox.ItemsSource = text.Split('^').Where(arg => i++ % 3 == 0).ToList(); 
    } 
} 

[編輯]

替換這一段代碼:

String fileText = readFile.ReadLine(); 
//noteSeparated is the variable that save the retrieve note from myFile.txt and is noteSeparated by '^' 
noteSeparated = fileText.Split(new char[] { '^' }); 
for (i = 0; i < noteSeparated.Length; i = i + 3) 
{ 
    noteSeparate = noteSeparated[i]; 
    a = noteSeparate; 
    break; 
} 
h = a; 

與:

var fileText = readFile.ReadToEnd(); 
var i = 0; 
var titles = fileText .Split('^').Where(arg => i++ % 3 == 0).ToList(); 

titles將是notTitle的列表。

+0

我應該在哪裏? –

+0

@ben tan - 不知道我明白這個問題。你問了如何獲得'noteTile'的列表。在我的代碼中'titles'將包含這個列表。 –

+0

雅我只想獲得標題..書房如何使用此列表檢索所有標題裏面? –

相關問題