2016-11-11 2 views
0
verwendet

Auf den App.xaml.cs ich den folgenden Codevon Windows 8.1 Store-Anwendungen OnCommandsRequested nicht Application hinzufügen, wenn async

private async void OnCommandsRequested(SettingsPane settingsPane, SettingsPaneCommandsRequestedEventArgs e) 
    { 
     var loader = ResourceLoader.GetForCurrentView(); 

     var generalCommand = new SettingsCommand("General Settings", "General Settings", handler => 
     { 
      var generalSettings = new GeneralSettingsFlyout(); 
      generalSettings.Show(); 
     }); 
     e.Request.ApplicationCommands.Add(generalCommand); 

     object data; 
     IAuthService _authService = new AuthService(); 
     if (Global.UserId == 0) 
      data = await _authService.GetSettingValueBySettingName(DatabaseType.GeneralDb, ApplicationConstants.GeneralDbSettingNames.ShowSupportInfo); 
     else 
      data = await _authService.GetSettingValueBySettingName(DatabaseType.UserDb, ApplicationConstants.UserDbSettingNames.ShowSupportInfo); 

     if (data != null && data.ToString().Equals("1")) 
     { 
      var supportCommand = new SettingsCommand("Support", "Support", handler => 
      { 
       var supportPane = new SupportFlyout(); 
       supportPane.Show(); 
      }); 
      e.Request.ApplicationCommands.Add(supportCommand); 
     } 

     var aboutCommand = new SettingsCommand("About", loader.GetString("Settings_OptionLabels_About"), handler => 
     { 
      var aboutPane = new About(); 
      aboutPane.Show(); 
     }); 
     e.Request.ApplicationCommands.Add(aboutCommand);   

}

Dieser Code fügt die Einstellung "Allgemeine Einstellungen" haben, aber weder "Support" noch "About" -Befehle. Kann jemand raten, was mit diesem Code falsch ist?

+0

PS: Alle Code erfolgreich ausgeführt und keine Ausnahmen werfen entweder. – SurenSaluka

Antwort

1

Anstatt die Befehle von Ihrem Dienst abzufragen, wenn sie angefordert werden, müssen Sie diese im Voraus abfragen und dann die bereits bekannten Befehle hinzufügen.

In onCommandsRequested können Sie nicht erwarten.

Eine Methode kehrt zurück, wenn die erste Wartezeit erreicht wird. Daher werden nur Befehle verwendet, die der Anfrage vor der Wartezeit hinzugefügt wurden.

Da SettingsPaneCommandsRequestedEventArgs keine Verzögerung bietet, besteht keine Möglichkeit, den Anforderer anzuweisen, auf den Abschluss interner Async-Aufrufe zu warten.

Beachten Sie auch, dass SettingsPane ist veraltet und nicht für neue App-Entwicklung für Windows empfohlen 10.