我知道Blazor是一项新技术。当前版本为v0.5.1
但是,我目前正在为新的Web应用程序实施PoC。我们希望在应用程序中具有拖放功能。我尝试以Blazor方式实施它,但是它不起作用。
我的放置目标:
<div class="col" ondragstart="@AllowDragOver" ondrop="@Add">
Run Code Online (Sandbox Code Playgroud)
和可拖动的项目:
<span class="badge badge-warning" draggable="true">îtem 1</span>
Run Code Online (Sandbox Code Playgroud)
Blazor C#代码:
@functions {
void Add()
{
Items.Add("hello");
}
void AllowDragOver(UIDragEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
}
问题是放置目标没有在浏览器中显示为放置目标:
到目前为止,我已经读到的是,将事件处理程序附加到Blazor C#函数(例如ondragstart)时,默认行为是众所周知的“ e.preventDefault()”,它应使放置目标可放置。
有谁知道如何解决这一问题?
斯文
我想发布我的解决方案。
到目前为止,我发现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">
Run Code Online (Sandbox Code Playgroud)
拖放在C#上效果很好,并且非常平滑,没有闪烁和中断。在接下来的几天中,我将创建一个简单的工作示例。
更新:
这是在Github上承诺的演示:https : //github.com/sven5/Blazor/tree/master/HelloWorldDragDrop
| 归档时间: |
|
| 查看次数: |
2380 次 |
| 最近记录: |