Я знаю, как установить свойства, такие как CanDrag и AllowDrop, и определить метод DragOver и метод Drop. Я просто не знаю, что писать внутри метода Drop.Как перенести текст из одного текстового блока в другой текстовый блок с помощью перетаскивания в универсальном приложении Windows?
0
A
ответ
1
Как переместить текст из одного TextBlock к другому TextBlock с помощью перетаскивания
Мы можем определить DragStarting
событие для источника Textblock
и сохранить текст источника Textblock
в DragStartingEventArgs
для передачи во время перетаскивания. И принять текст, когда drop у цели Textblock
. Прочтите текст от DragEventHandler
и установите его на цель Textblock
.
Здесь я написал простой пример, переместите текст с txtsource
, чтобы добавить к txttarget
.
код XAML:
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Padding="30">
<Border BorderBrush="Azure" BorderThickness="2">
<TextBlock x:Name="txtsource" Text="I'm the first textblock" CanDrag="True" DragStarting="txtsource_DragStarting" />
</Border>
<Border BorderBrush="Azure" BorderThickness="2" Margin="20" AllowDrop="True" >
<TextBlock x:Name="txttarget" Text="I'm the second textblock" Drop="txttarget_Drop" Height="50" Width="400" AllowDrop="True" DragEnter="txttarget_DragEnter"/>
</Border>
</StackPanel>
код за
private void txtsource_DragStarting(UIElement sender, DragStartingEventArgs args)
{
args.Data.SetText(txtsource.Text);
}
private async void txttarget_Drop(object sender, DragEventArgs e)
{
bool hasText = e.DataView.Contains(StandardDataFormats.Text);
e.AcceptedOperation = hasText ? DataPackageOperation.Copy : DataPackageOperation.None;
if (hasText)
{
var text = await e.DataView.GetTextAsync();
txttarget.Text +="\n"+ text;
}
}
private void txttarget_DragEnter(object sender, DragEventArgs e)
{
bool hasText = e.DataView.Contains(StandardDataFormats.Text);
e.AcceptedOperation = hasText ? DataPackageOperation.Copy : DataPackageOperation.None;
if (hasText)
{
e.DragUIOverride.Caption = "Drop here to insert text";
}
}
DragOver
Я использую событие, чтобы помочь определить, какие области могут упасть. Более подробно обратитесь к сценарию 2 из official sample.
Почему downvote? –