我正在尝试为商店制作一个简单的 Windows 8/RT 应用程序,但我有一个关于将项目添加到 ListBox 的问题。
在我的 MainPage 中,我有以下代码:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.brain = new MainController();
LoadData();
}
public void LoadData()
{
brain.GetNotesRepoFile().ReadFile();
Debug(""+brain.GetNotesRepoFile().GetNotesList().Count);
for(int i = 0; i < brain.GetNotesRepoFile().GetNotesList().Count; i++)
{
notesListBox.Items.Add( // code here );
}
}
}
public class NotesRepositoryFile
{
// CONSTRUCTOR
public NotesRepositoryFile()
{
this.notesRepository = new List<Note>();
}
// Read from file
public async void ReadFile()
{
// settings for the file
var path = @"Files\Notes.txt";
var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
// acquire file
var file = await folder.GetFileAsync(path);
var readThis = await Windows.Storage.FileIO.ReadLinesAsync(file);
foreach (var line in readThis)
{
notesRepository.Add(new Note(line.Split(';')[0], line.Split(';')[1]));
// check if the item was added
Debug.WriteLine("Added: " + notesRepository[notesRepository.Count - 1].ToString());
}
Debug.WriteLine("File read successfully");
}
}
我的输出是:
0
补充:测试1
添加:测试2
文件读取成功
我在这里尝试做的是从文件中读取字符串并使用 Items.Add 将它们添加到列表框中。但由于数组的大小为 0,即使项目已成功添加,也不起作用。
我不明白为什么Debug(""+brain.GetNotesRepoFile().GetNotesList().Count); 在Brain.GetNotesRepoFile().ReadFile()之前 执行;因为显然情况并非如此。
另外为什么这个解决方案有效,而上述无效?
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.brain = new MainController();
ReadFile();
}
// Read from file
public async void ReadFile()
{
// settings for the file
var path = @"Files\Notes.txt";
var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
// acquire file
var file = await folder.GetFileAsync(path);
var readThis = await Windows.Storage.FileIO.ReadLinesAsync(file);
foreach (var line in readThis)
{
brain.AddNote(line.Split(';')[0], line.Split(';')[1]);
notesListBox.Items.Add(brain.GetNotesRepoFile().GetNotesList()[brain.GetNotesRepoFile().GetNotesList().Count - 1].ToString());
}
Debug.WriteLine("File read successfully");
}
}