ストア用の単純な 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 を使用して listBox に追加することです。しかし、配列のサイズが 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");
}
}