【问题标题】:Drag & Drop Label Text into the TextBlock in UWP将标签文本拖放到 UWP 中的 TextBlock 中
【发布时间】:2017-07-14 17:24:14
【问题描述】:

我在文本块中有一些内容。我需要从标签中拖放文本来填充语句。这就像使用拖放来填充某些字符串的空白。 (例如:目标文本块包含“UWP 是 __ 平台同构应用程序架构创建 __ Microsoft __ 首次引入 __ Windows 10”,在 gridview 中我有单独的标签为“a”,by","and","in"。我需要将单词拖放到空白区域完成以下语句“UWP is由 Microsoft 创建并首次在 Windows 10 中引入的平台同构应用程序架构”)我正在尝试使用 C# 在 UWP 中实现。请帮助我做到这一点。 Click here to view the sample

【问题讨论】:

    标签: drag-and-drop uwp windows-10-universal


    【解决方案1】:

    我已经根据DragAndDropSampleManaged UWP 官方代码示例实现了您的要求。根据您的要求,您希望通过drag and drop 在现有句子中插入诸如“a”、“by”、“and”、“in”之类的文本。所以你应该得到你想要插入的范围。您可以使用GetRangeFromPoint (RichEditBox) 方法获取指针悬停的范围,如下所示:

    private void TargetTextBox_DragOver(object sender, DragEventArgs e)
    {
        var point = e.GetPosition(TargetTextBox);
        var range = TargetTextBox.Document.GetRangeFromPoint(point, Windows.UI.Text.PointOptions.ClientCoordinates);
        TargetTextBox.Document.Selection.SetRange(range.StartPosition - 1, range.EndPosition);       
        TargetTextBox.Focus(FocusState.Keyboard);
    }
    

    释放点时,文本将插入到特定范围内。

    private async void TargetTextBox_Drop(object sender, Windows.UI.Xaml.DragEventArgs e)
    {
         VisualStateManager.GoToState(this, "Outside", true);
         bool hasText = e.DataView.Contains(StandardDataFormats.Text);
         // if the result of the drop is not too important (and a text copy should have no impact on source)
         // we don't need to take the deferral and this will complete the operation faster
         e.AcceptedOperation = hasText ? DataPackageOperation.Copy : DataPackageOperation.None;
         if (hasText)
         {
             var text = await e.DataView.GetTextAsync();           
             TargetTextBox.Document.Selection.Text = text;
         }
    }
    

    【讨论】:

    • 太棒了。谢谢妮可朱。我还需要通过拖动内容替换一些字符。例如:我需要用输入(拖动)字符串替换__。请仔细检查我的问题中的示例图像。需要找到字符串__ 的位置,并且可以用相同位置的输入替换.(注意:我在目标内容中有多个可替换字符串(__)。)。有可能吗?
    • 是的,您可以修改选择范围以包含特定字符,例如“_”。
    • 谢谢 Nico zhu。它工作正常,请你给我一个想法,只替换__。拖动的内容将替换只有在__ 上拖动的内容。它不会替换其他字符串。因为我的要求是问答类型。用户可以将答案拖到问题内容上,并将其放在空白处。那只是拖到__上。不影响提问,希望你能理解我的要求
    • 根据您的要求,您可以在一句话中使用无大纲文本框替换“__”。并通过拖放复制诸如“a”、“by”、“and”、“in”之类的文本到文本框的轮廓。如果您认为此答案有帮助,请考虑接受!
    • 对不起 NicoZhu.. 我不能得到你。但是你的回答很好,它对我来说非常适合其他一些功能。谢谢你的努力。现在我需要我在上一条评论中提到的内容。你能给我一个你在之前评论中提到的例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2013-06-17
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多