Dot*_*NET 5 .net c# wpf events drag-and-drop
我的 WPF 应用程序中有一个TreeViewand Canvas。我正在尝试实现用户可以拖动 TreeViewItem 的功能,并且当用户放在画布上时应该调用一个方法,将 TreeViewItem 标头作为参数传递给该方法。
这是我到目前为止所做的:
private void TreeViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.Source.GetType().Name.Equals("TreeViewItem"))
{
TreeViewItem item = (TreeViewItem)e.Source;
if (item != null)
{
DataObject dataObject = new DataObject();
dataObject.SetData(DataFormats.StringFormat, item.Header.ToString());
DragDrop.DoDragDrop(item, dataObject, DragDropEffects.Copy);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我拖放到画布上时,什么也没有发生。因此,我不确定接下来应该做什么。我觉得它真的很小,但我不知所措。如何调用该方法并检测标头是否已删除?
有任何想法吗?
您需要AllowDrop在目标元素上设置为 true,然后在目标元素上处理DragOver和Drop事件。
例子:
private void myElement_DragOver(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent(typeof(MyDataType)))
{
e.Effects = DragDropEffects.None;
e.Handled = true;
}
}
private void myElement_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(MyDataType)))
{
// do whatever you want do with the dropped element
MyDataType droppedThingie = e.Data.GetData(typeof(MyDataType)) as MyDataType;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16061 次 |
| 最近记录: |