public MainWindow() { Instance = this; InitializeComponent(); Loaded += async(sender, args) => { var progressDialog = await this.ShowProgressAsync("Loading", "Authenticating with Azure Active Directory..."); progressDialog.SetIndeterminate(); Service = new KeyVaultService(); keyVaultTree.Service = Service; await keyVaultTree.Refresh(progressDialog); await progressDialog.CloseAsync(); keyVaultTree.NothingSelected += (o, eventArgs) => SetDetailPane(new BlankViewer()); keyVaultTree.VaultSelected += (o, vault) => SetDetailPane(new VaultViewer(vault)); keyVaultTree.SecretSelected += (o, secretVersion) => SetDetailPane(new SecretViewer(secretVersion)); keyVaultTree.KeySelected += (o, keyVersion) => SetDetailPane(new KeyViewer(keyVersion)); keyVaultTree.SecretCreating += async(o, vault) => { var createDlg = new CreateSecret(); createDlg.Owner = this; var dlg = createDlg.ShowDialog(); if (dlg.GetValueOrDefault(false)) { await vault.CreateSecret(createDlg.SecretName, createDlg.Value, new SecretAttributes() { Enabled = createDlg.Enabled, Expires = createDlg.Expires, NotBefore = createDlg.NotBefore }); var item = keyVaultTree.GetItemByContext(vault); ResetTreeViewLevel(item); } }; keyVaultTree.KeyCreating += async(o, vault) => { var createDlg = new CreateKey(); createDlg.Owner = this; var dlg = createDlg.ShowDialog(); if (dlg.GetValueOrDefault(false)) { await vault.CreateKey(createDlg.KeyName, createDlg.AccessPolicy, new KeyAttributes() { Enabled = createDlg.Enabled, Expires = createDlg.Expires, NotBefore = createDlg.NotBefore }); var item = keyVaultTree.GetItemByContext(vault); ResetTreeViewLevel(item); } }; keyVaultTree.VaultCreating += async(o, eventArgs) => { var createDlg = new CreateVault(); createDlg.Owner = this; var dlg = createDlg.ShowDialog(); if (dlg.GetValueOrDefault(false)) { await Service.CreateKeyVault(createDlg.Name, createDlg.ResourceGroup, createDlg.Location); await keyVaultTree.Refresh(); } }; keyVaultTree.VaultDeleting += async(o, vault) => { var result = await this.ShowMessageAsync("Confirm", "Are you sure you want to delete this vault? ALL keys and secrets will be deleted!", MessageDialogStyle.AffirmativeAndNegative); if (result == MessageDialogResult.Affirmative) { await vault.Delete(); await keyVaultTree.Refresh(); } }; keyVaultTree.SecretDeleting += async(o, secret) => { var result = await this.ShowMessageAsync("Confirm", "Are you sure you want to delete this secret? ALL versions will be deleted!", MessageDialogStyle.AffirmativeAndNegative); if (result == MessageDialogResult.Affirmative) { var item = keyVaultTree.GetItemByContext(keyVaultTree.GetCurrent <KeyVault>()); await secret.Delete(); ResetTreeViewLevel(item); } }; keyVaultTree.KeyDeleting += async(o, key) => { var result = await this.ShowMessageAsync("Confirm", "Are you sure you want to delete this key? ALL versions will be deleted!", MessageDialogStyle.AffirmativeAndNegative); if (result == MessageDialogResult.Affirmative) { var item = keyVaultTree.GetItemByContext(keyVaultTree.GetCurrent <KeyVault>()); await key.Delete(); ResetTreeViewLevel(item); } }; }; }