在UWP应用程序中通过拖放来传输复杂对象的好方法是什么?
本文关键字:对象 复杂 方法 是什么 传输 应用程序 UWP 拖放 | 更新日期: 2023-09-27 17:53:08
我的c#应用程序上有两个列表,其中list1列出所有对象,list2是这些对象的选择。我想启用拖放功能来选择对象。但我不能把这些对象放到DataView中。我怎么解决这个问题?
我不知道你的对象类型的结构,但如果它有一些标识符,你可以使用它来存储在DataView
。假设您有一个具有ID
属性的MyClass
对象列表,您可以将ID
's作为DataView
的文本。
在拖动操作开始时,你可以这样做:
private void List1_DragItemsStarting(object sender, Windows.UI.Xaml.Controls.DragItemsStartingEventArgs e)
{
var items = new StringBuilder();
foreach (MyClass item in e.Items)
{
if (items.Length > 0) items.AppendLine();
items.Append(item.ID);
}
e.Data.SetText(items.ToString());
//As we want our Reference list to say intact, we only allow Copy
e.Data.RequestedOperation = DataPackageOperation.Copy;
}
在删除选中项的处理程序中,您可以这样做:
private async void List2_Dropped(object sender, DragEventArgs e)
{
if (e.DataView.Contains(StandardDataFormats.Text))
{
var def = e.GetDeferral();
var s = await e.DataView.GetTextAsync();
var ids = s.Split(''n');
if (ids.Length > 0)
{
foreach (string id in ids)
{
// get the object for the ID here
}
}
e.AcceptedOperation = DataPackageOperation.Copy;
def.Complete();
}
}
不是传递对象,而是传递ID。