1

非同期データをテキストブロックにバインドするのに問題があります。

F11を使用してコードを段階的に実行すると、機能します。しかし、アプリを実行するだけで、次のようなエラーが発生します。

Value cannot be null. 

コードの実行速度が速すぎるようです。

これが私のコードです:

settings.GetSettings();
tbNamePlayer1.Text = settings.player1;
tbNamePlayer2.Text = settings.player2;

GetSettingsメソッド:

StorageFolder sf = await Package.Current.InstalledLocation.GetFolderAsync("XML");
StorageFile st;
try {
    st = await sf.GetFileAsync(filename);
} catch {
    WriteInitialSettings();
}
st = await sf.GetFileAsync(filename);
var reader = XmlReader.Create(st.Path);
XmlSerializer ser = new XmlSerializer(typeof(Settings));
settings = (Settings)ser.Deserialize(reader);
player1 = settings.player1;
player2 = settings.player2;
difficulty = settings.difficulty;
win = settings.win;
lose = settings.lose;
4

2 に答える 2

1

awaitあなたの方法が必要ですGetSettings

await settings.GetSettings();
tbNamePlayer1.Text = settings.player1;
tbNamePlayer2.Text = settings.player2;

GetSettingsそうすれば、プロパティを割り当てる前にメソッドが完了するまで (非同期で) 待機します。

于 2012-11-27T13:52:59.373 に答える
0

xaml で IsAsync または/および Priority Binding を見てください。多分これはあなたを助けることができます

http://www.switchonthecode.com/tutorials/wpf-tutorial-priority-bindings

于 2012-11-27T10:11:35.200 に答える