gpt4 book ai didi

c# - UWP ListView 拖拽项目自定义UI

转载 作者:行者123 更新时间:2023-12-04 16:47:34 26 4
gpt4 key购买 nike

我正在使用 C# 构建 UWP 应用程序,但在为 ListView 执行拖放操作时,我在自定义拖动 UI 时遇到了问题。

我正在使用 DragItemsStarting 对象来设置我要拖放的数据,但此事件不允许自定义 UI。

我已经添加了 DragStarting 但它没有被调用,所以我没有机会修改 Drag UI。

有人发现这个问题吗?知道如何在使用 ListView 时自定义拖动 UI 吗?

最佳答案

我不确定我对你的理解是否正确以及你的具体情况和要求,但我会在 ListView 中使用默认的重新排序行为:

<ListView x:Name="MyListView" ItemsSource="{Binding Items}" ReorderMode="Enabled" CanReorderItems="True" AllowDrop="True">
...
</ListView>

此代码允许您重新排序 ListView 中已经存在的项目.要通过拖放添加新项目,您需要订阅 Drop事件 ListView并将掉落的元素添加到您的元素集合中,其类型应为 ObservableCollection<YourItemType>并分配/绑定(bind)到 ListView.ItemsSource .

如果您仍然需要自定义您拖放的视觉对象,您需要订阅 DragStarting此对象中的事件并设置您想要的任何 UI 元素:

private async void OnDragStarting(UIElement sender, DragStartingEventArgs args)
{
var deferral = args.GetDeferral();
args.Data.Properties.Add("ItemViewModel", DataContext);

var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(uiElementToDrag);

var buffer = await renderTargetBitmap.GetPixelsAsync();
var bitmap = SoftwareBitmap.CreateCopyFromBuffer(buffer,
BitmapPixelFormat.Bgra8,
renderTargetBitmap.PixelWidth,
renderTargetBitmap.PixelHeight,
BitmapAlphaMode.Premultiplied);
args.DragUI.SetContentFromSoftwareBitmap(bitmap);
deferral.Complete();
}

uiElementToDragUIElement 类型的视觉可拖动元素.

关于c# - UWP ListView 拖拽项目自定义UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37432713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com