【问题标题】:retrieve the full list of text in isolated storage Windows Phone 7检索独立存储 Windows Phone 7 中的完整文本列表
【发布时间】:2011-06-25 23:14:59
【问题描述】:

我正在尝试通过数据绑定检索多个图像和文本,但我只设法仅检索隔离存储中的第一个文本(代码如下)。

是否可以通过数据绑定到 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 only

【问题讨论】:

    标签: c# .net windows-phone-7 string isolatedstorage


    【解决方案1】:

    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();
    }
    

    [EDIT] 将列表绑定到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 的列表。

    【讨论】:

    • @ben tan - 不确定我是否理解这个问题。您问如何获取noteTile 的列表。在我的代码中titles 将包含此列表。
    • 是的,我只想获取标题.. den 我如何使用这个列表来检索里面的所有标题?
    • @ben tan - 你刚刚设置了ItemsSource。更新了答案
    • 嗯,但我不确定如何将我的代码更改为您使用拆分的答案
    • @ben tan - 我以为你会摆脱“图像代码”。你需要明确你想要达到的目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2012-11-16
    相关资源
    最近更新 更多