gpt4 book ai didi

c# - 在 Surface 上的 ScatterView 中使用 LibraryStacks

转载 作者:行者123 更新时间:2023-11-30 15:49:22 25 4
gpt4 key购买 nike

我们正在尝试弄清楚如何将项目从 LibraryStack 容器拖到 ScatterView 上,例如照片查看器示例应用程序的工作方式。目前,项目只是在我们将其拖出后飞回 LibraryStack。我们可以将项目拖放到其他 LibraryStacks 或 LibraryBars 中。

这是我们正在尝试的示例:

<s:SurfaceWindow x:Class="Idia_seminar.SurfaceWindow1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="http://schemas.microsoft.com/surface/2008"
Title="Idia_seminar"
>
<s:SurfaceWindow.Resources>
<ImageBrush x:Key="WindowBackground" Stretch="None" Opacity="0.6" ImageSource="pack://application:,,,/Resources/WindowBackground.jpg"/>
</s:SurfaceWindow.Resources>

<Grid Background="{StaticResource WindowBackground}" >
<s:ScatterView Name="scatterView1" AllowDrop="True">
<s:SurfaceButton Name="surfaceButton1">Button</s:SurfaceButton>
<s:LibraryStack AllowDrop="True">
<s:LibraryStackItem Content="hello"></s:LibraryStackItem>
</s:LibraryStack>
</s:ScatterView>
</Grid>
</s:SurfaceWindow>

谢谢!

最佳答案

这当然是可行的。我编写了一个示例,允许您从位于散点图内的库栏中拖动项目并将项目放到散点图上,它们将在散点图上显示为新的散点图项目。

我不确定您哪里出错了,但是为了使拖放工作正常,必须发生以下情况:

  1. 放置目标必须将 AllowDrop 设置为 true
  2. 放置目标必须对 HitTest 可见(通常通过设置非空背景来实现 - 我使用透明)
  3. 放置目标必须处理放置事件并对数据做一些巧妙的事情

这是我的 XAML:

<s:ScatterView AllowDrop="True" Background="Transparent" 
x:Name="scatterView" s:SurfaceDragDrop.Drop="scatterView_Drop">
<s:SurfaceButton Name="surfaceButton1">Button</s:SurfaceButton>
<s:LibraryStack>
<s:LibraryStackItem Content="Hello"></s:LibraryStackItem>
</s:LibraryStack>
</s:ScatterView>
</s:ScatterView>

在代码中,我们处理 Drop 事件

private void scatterView_Drop(object sender, SurfaceDragDropEventArgs e)
{
Console.WriteLine("Got drop: " + e.Cursor.Data);
var newItem = new ScatterViewItem();
// Rely on .ToString() on the data. A real app would do something more clever
newItem.Content = e.Cursor.Data;
// Place the new item at the drop location
newItem.Center = e.Cursor.GetPosition(scatterView);
// Add it to the scatterview
scatterView.Items.Add(newItem);
}

显然,上面的代码没有处理将项目拖回图书馆栏的问题。我把它留给读者作为练习 ;-)

以下 MSDN 指南是我绝对认为您应该阅读的内容:http://msdn.microsoft.com/en-us/library/ee804812.aspx

关于c# - 在 Surface 上的 ScatterView 中使用 LibraryStacks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632909/

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