我在textblock中有一些内容。我需要从标签拖放文本以填充语句。这就像使用拖放来填充一些字符串的空白。 (例如:目标文本块包含&#34; UWP是__平台 - 同构应用程序架构创建__ Microsoft __首先介绍__ Windows 10&#34;并且在gridview中我有单独的标签为&#34; a < /强>&#34;&#34;在的;,&#34; 和&#34;&#34 &#34 按&#34;。我需要拖动单词并放入空白区域以完成以下语句&#34; UWP是由Microsoft创建的平台同构应用程序体系结构,最初是在Windows 10&#34;中引入的。我正在尝试使用C#在UWP中实现。请帮助我这样做。 Click here to view the sample
答案 0 :(得分:1)
我已根据DragAndDropSampleManaged
UWP官方代码示例达到了您的要求。根据您的要求,您希望在&#34;中插入&#34; a&#34;,&#34;&#34;,&#34;和&#34;,&#34;等文本。通过drag and drop
进入已存在的句子。所以你应该得到你想插入的范围。您可以使用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;
}
}