|
|
|
@ -21,12 +21,12 @@ namespace ControlCatalog.Pages |
|
|
|
|
|
|
|
int textCount = 0; |
|
|
|
SetupDnd("Text", d => d.Set(DataFormats.Text, |
|
|
|
$"Text was dragged {++textCount} times")); |
|
|
|
$"Text was dragged {++textCount} times"), DragDropEffects.Copy | DragDropEffects.Move | DragDropEffects.Link); |
|
|
|
|
|
|
|
SetupDnd("Custom", d => d.Set(CustomFormat, "Test123")); |
|
|
|
SetupDnd("Custom", d => d.Set(CustomFormat, "Test123"), DragDropEffects.Move); |
|
|
|
} |
|
|
|
|
|
|
|
void SetupDnd(string suffix, Action<DataObject> factory, DragDropEffects effects = DragDropEffects.Copy) |
|
|
|
void SetupDnd(string suffix, Action<DataObject> factory, DragDropEffects effects) |
|
|
|
{ |
|
|
|
var dragMe = this.Find<Border>("DragMe" + suffix); |
|
|
|
var dragState = this.Find<TextBlock>("DragState"+suffix); |
|
|
|
@ -36,9 +36,12 @@ namespace ControlCatalog.Pages |
|
|
|
var dragData = new DataObject(); |
|
|
|
factory(dragData); |
|
|
|
|
|
|
|
var result = await DragDrop.DoDragDrop(e, dragData, DragDropEffects.Copy); |
|
|
|
var result = await DragDrop.DoDragDrop(e, dragData, effects); |
|
|
|
switch (result) |
|
|
|
{ |
|
|
|
case DragDropEffects.Move: |
|
|
|
dragState.Text = "Data was moved"; |
|
|
|
break; |
|
|
|
case DragDropEffects.Copy: |
|
|
|
dragState.Text = "Data was copied"; |
|
|
|
break; |
|
|
|
@ -48,13 +51,22 @@ namespace ControlCatalog.Pages |
|
|
|
case DragDropEffects.None: |
|
|
|
dragState.Text = "The drag operation was canceled"; |
|
|
|
break; |
|
|
|
default: |
|
|
|
dragState.Text = "Unknown result"; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void DragOver(object sender, DragEventArgs e) |
|
|
|
{ |
|
|
|
// Only allow Copy or Link as Drop Operations.
|
|
|
|
e.DragEffects = e.DragEffects & (DragDropEffects.Copy | DragDropEffects.Link); |
|
|
|
if (e.Source is Control c && c.Name == "MoveTarget") |
|
|
|
{ |
|
|
|
e.DragEffects = e.DragEffects & (DragDropEffects.Move); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
e.DragEffects = e.DragEffects & (DragDropEffects.Copy); |
|
|
|
} |
|
|
|
|
|
|
|
// Only allow if the dragged data contains text or filenames.
|
|
|
|
if (!e.Data.Contains(DataFormats.Text) |
|
|
|
@ -65,6 +77,15 @@ namespace ControlCatalog.Pages |
|
|
|
|
|
|
|
void Drop(object sender, DragEventArgs e) |
|
|
|
{ |
|
|
|
if (e.Source is Control c && c.Name == "MoveTarget") |
|
|
|
{ |
|
|
|
e.DragEffects = e.DragEffects & (DragDropEffects.Move); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
e.DragEffects = e.DragEffects & (DragDropEffects.Copy); |
|
|
|
} |
|
|
|
|
|
|
|
if (e.Data.Contains(DataFormats.Text)) |
|
|
|
_DropState.Text = e.Data.GetText(); |
|
|
|
else if (e.Data.Contains(DataFormats.FileNames)) |
|
|
|
|