MudBlazor拖拽组件视觉问题:拖拽时显示整个容器而非单个Item
问题解决:MudBlazor拖拽时仅显示Item核心内容
当使用MudDropContainer时,如果Item里包含MudMenu、折叠面板这类额外组件,拖拽过程中会显示整个包含这些组件的容器,但我们只希望显示被拖拽Item的核心内容(比如名称),可以通过以下方法解决:
MudDropContainer提供了DragItemRenderer参数,它专门用于定义拖拽过程中显示的内容。默认情况下,拖拽预览会复用ItemRenderer的内容,所以我们只需要单独指定DragItemRenderer,只渲染Item的核心部分即可。
修改后的完整代码:
<MudDropContainer T="DropItem" Items="_items" ItemsSelector="@((item, dropzone) => item.Identifier == dropzone)" ItemDropped="ItemUpdated" Class="d-flex flex-wrap flex-grow-1 " > <ChildContent> <MudDropZone T="DropItem" Identifier="Drop Zone 1" Class="mud-background-gray pa-6 ma-8 flex-grow-1"> <MudText Typo="Typo.h5">Drop Zone 1</MudText> </MudDropZone> <MudDropZone T="DropItem" Identifier="Drop Zone 2" Class="mud-background-gray pa-6 ma-8 flex-grow-1"> <MudText Typo="Typo.h5">Drop Zone 2</MudText> </MudDropZone> </ChildContent> <!-- 正常显示的Item,保留所有功能组件 --> <ItemRenderer> <MudPaper Elevation="5" Class="pa-4 my-4">@context.Name <MudMenu Class="action__menu user-group-app-item__menu" EndIcon="@Icons.Material.Filled.MoreHoriz" AnchorOrigin="Origin.BottomLeft" TransformOrigin="Origin.TopCenter"> <MudMenuItem Class="menu-item menu-item__primary" Icon="@Icons.Material.Filled.ReadMore" IconSize="Size.Small" > Overview </MudMenuItem> <MudMenuItem Class="menu-item menu-item__error" Icon="@Icons.Filled.Delete" IconSize="Size.Small"> Remove </MudMenuItem> </MudMenu> </MudPaper> </ItemRenderer> <!-- 拖拽时显示的预览内容,仅保留核心信息 --> <DragItemRenderer> <MudPaper Elevation="5" Class="pa-4 my-4">@context.Name</MudPaper> </DragItemRenderer> @code { private void ItemUpdated(MudItemDropInfo<DropItem> dropItem) { dropItem.Item.Identifier = dropItem.DropzoneIdentifier; } private List<DropItem> _items = new() { new DropItem(){Name="Item 1", Identifier="Drop Zone 1"}, new DropItem(){Name="Item 2", Identifier="Drop Zone 1"}, new DropItem(){Name="Item 3", Identifier="Drop Zone 2"} }; public class DropItem { public string Name { get; init; } public string Identifier { get; set; } } }
这样设置后,拖拽时就只会显示不带菜单的Item核心内容,正常显示的Item依然保留所有功能组件,拖拽结果也不受影响。
内容的提问来源于stack exchange,提问作者Yurii.V.
相关产品推荐
相关产品推荐

