【问题标题】:Adding drag and drop functionality to metro style app buttons with C# and XAML使用 C# 和 XAML 向 Metro 风格应用程序按钮添加拖放功能
【发布时间】:2012-09-07 01:53:03
【问题描述】:

我正在尝试在我的应用中实现一种拖动功能。作为一个简单的例子,想象一下我有一个 2x2 正方形的按钮,所以总共有四个按钮。单击一个按钮将执行一些其他功能,但是我希望当他们按住并拖动其中一个按钮以使其执行其他操作时(理想情况下,如果您将一个按钮拖放到另一个按钮的空间中,则两个按钮将交换位置,只要我可以拖放工作,交换应该很容易)。

我已经进行了一些研究并遵循了一些教程,但似乎在所有这些步骤中都出现了错误。似乎 ListViews 和 GridViews 已经有一些拖放功能,但是我在这些视图中正确安排我的按钮(有四个以上,它们位于非常特定的位置,如图表)时遇到了麻烦,更不用说拖动了并放弃与他们合作。

我该怎么做呢?理想情况下,我可以将这些按钮标记为可拖动,然后在拖放事件中检查放置位置,如果该位置有效,则执行交换方法。我似乎无法弄清楚如何使它们可拖动或如何有一个检查放置位置的事件。

谢谢。

【问题讨论】:

    标签: xaml drag-and-drop windows-runtime windows-store-apps winrt-xaml


    【解决方案1】:

    简单易行,创建一个看起来像您想要的方式的自定义控件,将 ManipulationMode 设置为 TranslateX|TranslateY,处理操作增量事件以使用 Canvas 或 TranslateTransform 之类的东西更新定位,并且在操作完成时 - 使其单击或动画到新位置。根据我的经验 - 让任何其他操作与常规 Button 类一起工作是行不通的,而且由于按钮是一个非常简单的控件 - 在这种情况下,创建自己的控件比尝试扩展现有的控件更容易。

    【讨论】:

    • 抱歉,我只能在特定时间处理这个项目,所以我可能需要一段时间才能看到答案,而且我不是最有经验的编码人员。所以你说的是创建一个用户控件,然后编写代码来检查项目在 X 和 Y 轴上拖了多远,然后根据它被放入的 X 和 Y 位置我可以编写代码来做掉期?它不会是视觉上的拖动,而是只是基于开始和结束的 X 和 Y 位置工作吗?我以前从未制作过用户控件,所以我不确定操作模式会做什么或操作增量事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2012-11-25
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多