private async void Group_Drop(object sender, DragEventArgs e) { FrameworkElement senderElement = sender as FrameworkElement; DebugHelper.Assert(senderElement != null); IDatabaseGroupViewModel groupVm = senderElement.DataContext as IDatabaseGroupViewModel; DebugHelper.Assert(groupVm != null); IKeePassGroup thisGroup = groupVm.Node as IKeePassGroup; DebugHelper.Assert(thisGroup != null); DragOperationDeferral deferral = e.GetDeferral(); string encodedUuid = await e.DataView.GetTextAsync(); if (thisGroup.TryAdopt(encodedUuid)) { DebugHelper.Trace($"Successfully moved node {encodedUuid} to new parent {thisGroup.Uuid.EncodedValue}"); e.AcceptedOperation = DataPackageOperation.Move; } else { DebugHelper.Trace($"WARNING: Unable to locate dropped node {encodedUuid}"); e.AcceptedOperation = DataPackageOperation.None; } e.Handled = true; deferral.Complete(); }
private async void Group_DragEnter(object sender, DragEventArgs e) { FrameworkElement senderElement = sender as FrameworkElement; DebugHelper.Assert(senderElement != null); IDatabaseGroupViewModel groupVm = senderElement.DataContext as IDatabaseGroupViewModel; DebugHelper.Assert(groupVm != null); IKeePassGroup thisGroup = groupVm.Node as IKeePassGroup; DebugHelper.Assert(thisGroup != null); DragOperationDeferral deferral = e.GetDeferral(); string text = await e.DataView.GetTextAsync(); if (!String.IsNullOrWhiteSpace(text) && thisGroup.CanAdopt(text)) { e.AcceptedOperation = DataPackageOperation.Move; e.Handled = true; } deferral.Complete(); }
/// <summary> /// Handles clicks on the Child GridView. /// </summary> /// <param name="sender">The Child GridView.</param> /// <param name="e">ClickEventArgs for the action.</param> private void ChildGridView_ItemClick(object sender, ItemClickEventArgs e) { bool wasFiltered = !String.IsNullOrEmpty(this.searchBox.Text); if (wasFiltered) { this.searchBox.Text = String.Empty; } // First check to see if it's an entry if (e.ClickedItem is IDatabaseEntryViewModel clickedEntry) { IKeePassEntry entry = clickedEntry.Node as IKeePassEntry; DebugHelper.Assert(entry != null); if (wasFiltered) { ViewModel.NavigationViewModel.SetGroup(entry.Parent); } // For now, on item click, navigate to the EntryDetailsView. Frame.Navigate( typeof(EntryDetailsView), ViewModel.GetEntryDetailsViewModel(entry, /* editing */ false) ); } else { // We clicked a group, so drill into it... IDatabaseGroupViewModel clickedGroup = e.ClickedItem as IDatabaseGroupViewModel; DebugHelper.Assert(clickedGroup != null); clickedGroup.RequestOpenCommand.Execute(null); } }