拖放中的自定义接受操作

时间:2018-10-17 13:44:38

标签: c# uwp drag-and-drop uwp-xaml user-feedback

我正在制作图书馆管理软件。这是屏幕截图: screenshot

我具有一些实现功能,例如将一本书拖到删除图标中以删除该书。但是有两个障碍:

  1. DataPackageOperation只有四种可能性:复制,链接,不移动。因此,在四点之后,很难区分是哪本书放哪本书。
  2. 我计划将更多项目添加到CommandBar。但是只有四种可能的操作

我需要一种方法,向用户提供有关当前拖动的书是哪个AppBarButton的自定义反馈。 DataPackageOperation仅包含四个。其中,不能使用“无”(因为这会造成混淆)。有没有办法提供反馈?

1 个答案:

答案 0 :(得分:2)

  

我需要一种方法,向用户提供有关当前拖动的书是哪个AppBarButton的自定义反馈

您可以通过自定义拖动UI向用户提供自定义反馈。以下代码来自XamlDragAndDrop官方代码示例。

private void TargetTextBox_DragEnter(object sender, Windows.UI.Xaml.DragEventArgs e)
{
    /// Change the background of the target
    VisualStateManager.GoToState(this, "Inside", true);
    bool hasText = e.DataView.Contains(StandardDataFormats.Text);
    e.AcceptedOperation = hasText ? DataPackageOperation.Copy : DataPackageOperation.None;
    if (hasText)
    {
        e.DragUIOverride.Caption = "Drop here to insert text";
        // Now customize the content
        if ((bool)HideRB.IsChecked)
        {
            e.DragUIOverride.IsGlyphVisible = false;
            e.DragUIOverride.IsContentVisible = false;
        }
        else if ((bool)CustomRB.IsChecked)
        {
            var bitmap = new BitmapImage(new Uri("ms-appx:///Assets/dropcursor.png", UriKind.RelativeOrAbsolute));
            // Anchor will define how to position the image relative to the pointer
            Point anchor = new Point(0,52); // lower left corner of the image
            e.DragUIOverride.SetContentFromBitmapImage(bitmap, anchor);
            e.DragUIOverride.IsGlyphVisible = false;
            e.DragUIOverride.IsCaptionVisible = false;
        }
        // else keep the DragUI Content set by the source
    }
}

enter image description here