我知道 Blazor 是一项新技术。当前版本为 v0.5.1
不过,我目前正在为一个新的 Web 应用程序实现 PoC。
我们希望在应用程序中具有拖放功能。
我尝试以 Blazor 方式实现它,但它不起作用。
我的放置目标:
<div class="col" ondragstart="@AllowDragOver" ondrop="@Add">
以及可拖动的项目:
<span class="badge badge-warning" draggable="true">îtem 1</span>
Blazor C# 代码:
@functions {
void Add()
{
Items.Add("hello");
}
void AllowDragOver(UIDragEventArgs e)
{
}
}
问题是放置目标不会在浏览器中显示为放置目标:
到目前为止我读到的是,当将事件处理程序附加到 Blazor C# 函数(例如 ondragstart)时,默认行为是众所周知的“e.preventDefault()”,它应该使放置目标可放置。
有谁知道如何解决这一问题?
Sven
我想发布我的解决方案。
到目前为止我发现 dataTransfer.setData 目前在 Blazor 0.5.1 中不起作用。我可以通过将拖动的元素保存在作为 DI 服务注入的共享 C# 类中来解决此问题。
容器需要调用“e.preventDefault()”才能成为有效的放置目标。虽然这在 C# 中是不可能的,但您可以轻松地将其称为纯 Javascript:
<div class="col-sm-1" dropzone="move" ondragenter="@(e => OnContainerDragEnter(e))" ondragover="event.preventDefault();" ondragleave="@(e => OnContainerDragLeave(e))"
ondrop="@(e => OnContainerDrop(e, Date))" style="@_highlightColor;@_highlightDropTargetStyle">
拖放在 C# 中工作得非常好,并且非常流畅,没有闪烁和中断。我将在接下来的几天内创建一个简单的工作示例。
UPDATE:
抱歉,我的示例已经过时,目前我没有足够的时间来维护这个演示及其源代码。所以我想添加一个来自 Chris Sainty 的工作演示的链接:https://chrissainty.com/investigating-drag-and-drop-with-blazor/ https://chrissainty.com/investigating-drag-and-drop-with-blazor/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)