我在堆棧網看到有人問 如何拖動一個TextBlock的文字到另一個TextBlock 于是看到一個大神給出的方法,下面我就來和大家說下如何拖動
一開始我們需要一個界面,就放兩個TextBlock 一個是源,一個目標。我們拖動源到目標。
<Page x:Class="Textvt.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/applicationPageBackgroundThemeBrush}"> <StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Padding="30"> <Border BorderBrush="Azure" BorderThickness="2"> <TextBlock x:Name="TextSource" Text="我是源" CanDrag="True" DragStarting="Txtsource_OnDragStarting" /> </Border> <Border Margin="20" BorderBrush="Azure" BorderThickness="2" AllowDrop="True" > <TextBlock x:Name="TextTarget" Text="目標TextBlock" Drop="Txttarget_OnDrop" Height="50" Width="400" AllowDrop="True" DragEnter="Txttarget_OnDragEnter"/> </Border> </StackPanel> </Grid></Page>在xaml.cs 需要3個事件,開始拖放,拖放,拖放進入。
其中拖放進入是設置鼠標顯示的字和其他的東西,可以不要這個函數,不會影響功能。
private void Txtsource_OnDragStarting(UIElement sender, DragStartingEventArgs args) { //開始拖放 //設置拖放文字,文字是我們點擊的TextBlock args.Data.SetText(TextSource.Text); } private async void Txttarget_OnDrop(object sender, DragEventArgs e) { //如果有文字,那么就是把他放在要拖放的TextBlock bool hasText = e.DataView.Contains(StandardDataFormats.Text); //顯示復制還是沒有 //拖動顯示可以去我之前寫的 http://blog.csdn.net/lindexi_gd/article/details/49757187?locationNum=2&fps=1 e.AcceptedOperation = hasText ? DataPackageOperation.Copy : DataPackageOperation.None; if (hasText) { var text = await e.DataView.GetTextAsync(); TextTarget.Text += "/n" + text; } } private void Txttarget_OnDragEnter(object sender, DragEventArgs e) { bool hasText = e.DataView.Contains(StandardDataFormats.Text); e.AcceptedOperation = hasText ? DataPackageOperation.Copy : DataPackageOperation.None; if (hasText) { if (e.DragUIOverride != null) { e.DragUIOverride.Caption = "Drop here to insert text"; } } }代碼:http://download.csdn.net/detail/lindexi_gd/9739764 可以的話給點積分。
問題原文:
https://stackoverflow.com/questions/41662650/how-to-move-text-from-one-textblock-to-another-textblock-using-drag-and-drop-in
本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含鏈接:http://blog.csdn.net/lindexi_gd ),不得用于商業目的,基于本文修改后的作品務必以相同的許可發布。如有任何疑問,請與我聯系。
新聞熱點
疑難解答