TranslateTransform 用于 Silverlight 中的拖放

2024-01-10

我们正在尝试在 Silverlight (3) 中实现拖放。我们希望用户能够将元素从树视图拖动到 UI 的另一部分。父元素是 Grid,我们一直在尝试将 TranslateTransform 与 MouseLeftButtonDown、MouseMove(等)事件一起使用,正如各种在线示例所建议的那样。例如:

http://www.85turns.com/2008/08/13/drag-and-drop-silverlight-example/ http://www.85turns.com/2008/08/13/drag-and-drop-silverlight-example/

我们正在 IronPython 中执行此操作,但这或多或少应该是无关紧要的。拖动开始已正确启动,但我们正在拖动的项目出现在“错误”位置(从光标向右和向下偏移几百个像素),我一生都无法找出原因。

基本的xaml:

<Grid x:Name="layout_root">
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="120"/>
    </Grid.RowDefinitions>
    <Border x:Name="drag" Background="LightGray" Width="40" Height="15"
     Visibility="Collapsed" Canvas.ZIndex="10">
        <Border.RenderTransform>
            <TranslateTransform x:Name="transform" X="0" Y="0" />
        </Border.RenderTransform>            
        <TextBlock x:Name="dragText" TextAlignment="Center"
         Foreground="Gray" Text="foo" />
    </Border>
    ...
</Grid>

startDrag 方法由 MouseLeftButtonDown 事件(在 TreeViewItem.Header 中的 TextBlock 上)触发。 onDrag 由 MouseMove 触发。在以下代码中,self.root 是 Application.Current.RootVisual(来自 app.xaml 的顶级 UI 元素):

def startDrag(self, sender, event):
    self.root.drag.Visibility = Visibility.Visible
    self.root.dragText.Text = sender.Text
    position = event.GetPosition(self.root.drag.Parent)

    self.root.drag.transform.X = position.X
    self.root.drag.transform.Y = position.Y

    self.root.CaptureMouse()
    self._captured = True

def onDrag(self, sender, event):
    if self._captured:
        position = event.GetPosition(self.root.drag.Parent)
        self.root.drag.transform.X = position.X
        self.root.drag.transform.Y = position.Y

拖动的项目跟随鼠标移动,但偏移相当大。知道我做错了什么以及如何纠正吗?


所以事实证明我应该设置 Margin 而不是使用 TranslateTransform:

def startDrag(self, sender, event):
    self.root.drag.Visibility = Visibility.Visible
    self.root.dragText.Text = sender.Text

    self.root.CaptureMouse()
    self._captured = True
    self.root.MouseLeftButtonUp += self.stopDrag
    self.root.MouseLeave += self.stopDrag
    self.onDrag(sender, event)

def onDrag(self, sender, event):
    if self._captured:
        position = event.GetPosition(self.root.layout_root)
        self.root.drag.Margin = Thickness(position.X, position.Y, 0, 0)
        self.root.drag.UpdateLayout() 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TranslateTransform 用于 Silverlight 中的拖放 的相关文章

  • WPF/Silverlight 中的动画资源?

    我正在寻找一些好的资源来增强 WPF Silverlight 中使用的动画 故事板概念 有什么指点吗 发布的一个链接是 WPF 特定的 对于 Silverlight 这里还有一些其他资源 MSDN 动画概述 http msdn micros
  • Snap.svg 如何获取我们拖动的元素

    我正在使用 Snap svg 库并进行一些拖放操作 我的问题是如何获取我拖动的元素的 id 我正在尝试实现拖放 并且只有选定的区域才是有效的放置目标 我不知道如何检查拖拽下方的元素是什么 这是来自文档 Element drag onmove
  • 使用 Silverlight 在运行时在 tabcontrol 中添加 TabItem

    嗨朋友们 我是 silverlight 应用程序的新手 我创建了带有 4 个 tabitem 的 tabcontrol tabitem 的名称类似于 tab1 tab2 tab3 tab4 我需要在运行项目中添加一个选项 通过以下代码添加成
  • 我可以在运行时更改 Silverlight 浏览器外设置吗?

    我有一个代码库 可以在各种配置中安装 OOB SL5 应用程序 根据运行时的配置 由初始化参数选择 我想在执行安装之前更新 OOB 设置 标题 窗口标题 看来唯一的方法是在编译时通过 OutOfBrowserSettings xml 文件
  • 自定义光标,无需库即可拖放 HTML 元素

    I have an HTML page which has some draggable elements Our specs say that hovering mouse on such element the cursor must
  • jQuery UI - 可拖动在放置后无法立即工作

    HTML div class character list div class character list container div img class 1 src http ahna web44 net img charas 13 p
  • Silverlight 默认 ContentPresenter 内容

    为什么这不起作用 In 通用 xaml对于自定义控件 在应用于自定义控件的样式中
  • ToggleButton 控件 VisualStateManager:处理多个悬停状态

    参考我之前的问题 Silverlight MVVM 困惑 基于状态更新图像 https stackoverflow com questions 5034189 silverlight mvvm confusion updating imag
  • 无法在 Android Studio 中向 Activity_main.xml 添加任何项目

    在 Android Studio 中 我无法在设计视图中将调色板中的任何项目添加到 Activity main xml 中 它只是不允许我拖放它们 知道为什么会发生这种情况吗 这是打印屏幕 根据android studio中用于androi
  • 使用 Box2d 拖放 UIViews (iOS) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我最近发现了一个很好的教程 用于使用
  • Silverlight - 动画贝塞尔曲线画线?

    我正在构建一个小型 Silverlight 应用程序 在我的应用程序中 我需要绘制线条 类似于附图中所示的内容 我知道绘制拱形连接线 绿色 的最佳方法是使用贝塞尔曲线 我的问题是 如何对线条的绘制进行动画处理 让它们从起始 X Y 坐标开始
  • CSS:变换:翻译(-50%,-50%)使文本模糊[重复]

    这个问题在这里已经有答案了 我想将我的div我使用这种方法 但它使我的文本在div blurry div top 50 left 50 webkit transform translate 50 50 transform translate
  • XML 序列化基类列表

    我有课A从类继承B 我有一个班级名单B其中包含A and B items List b myList new List b myList Add new A 当我尝试使用序列化此列表时XmlSerializable 抛出异常 如果我将列表定
  • android中如何实现列表之间的拖放?

    我试图做到这一点 以便用户可以从一个列表视图中拖动文本视图 然后将其放入另一个列表视图中 但我发现这非常困难 到目前为止我发现的最大问题是 onTouchEvents 似乎只能在 ACTION DOWN 事件起源的视图中听到 我将单击一个列
  • Silverlight xaml TextBlock.Text 与 CDATA 在运行时未显示?

    以下 xaml 会生成文本 激活左侧测试 在运行时和设计时可见 在 Vs2010 中
  • 如何从傅里叶变换绘制频谱

    我想绘制音乐文件的频谱 就像他们在 Audacity 中所做的那样 因此 我希望 x 轴上以赫兹为单位的频率 y 轴上以振幅 或 desibel 为单位 我将歌曲 大约 2000 万个样本 分成一次 4096 个样本的块 这些块将产生 20
  • 如何在 macOS 上的 SwiftUI 中设置拖动图像

    我正在尝试更改 GridView 的默认拖放预览图像 该图像似乎包含网格中的所有可见项目 据我了解 我应该能够设置NSItemProvider previewImageHandler块来自定义所使用的图像 我似乎找不到任何关于返回自定义图像
  • 导入 IronPython 的嵌入式库

    我已通过 NuGet 将 IronPython 标准库添加到我的 c net4 项目中 后来获得了一些参考资料 IronPython IronPython Modules IronPython SQLite IronPython Wpf M
  • 强制绑定更新 Silverlight

    如何强制更新我的对象 DataContext 绑定 我正在网格上使用事件 并且在事件触发之前不会处理绑定更新 有什么廉价的技巧可以解决这个问题吗 最后 我总是可以用旧的手动方式从文本框中获取值并更新我的对象 但最好让绑定为我做这件事 UPD
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基

随机推荐

  • 如何删除默认的 Bootstrap 3 轮播控件背景渐变?

    我很确定这是我需要修改的代码 但由于某种原因我无法让渐变在 IE 中消失 我要他们彻底消失 carousel control text shadow none opacity 1 filter alpha opacity 100 carou
  • Pandas Groupby Agg 功能不减少

    我正在使用我在工作中已经使用了很长时间的聚合函数 这个想法是 如果传递给函数的系列的长度为 1 即该组只有一个观察值 则返回该观察值 如果传递的系列的长度大于 1 则观察结果将以列表形式返回 这对某些人来说可能看起来很奇怪 但这不是一个 X
  • (Tomcat) 部署时备份 WAR

    是否有任何内置机制可以在 Tomcat 中部署时备份 war 文件 例如 我部署了 whosit war 我想要当前部署的 whosit war 备份到 whosit backup war 或者 如果每个部署在 whosit deploy
  • 计算一个字符串在另一个字符串中出现的次数

    我有一个指向 CSS 文件的字符串 css style css 我想知道有多少 都在字符串之内 我如何用 JavaScript 得到这个 对于这个简单的情况 您不需要正则表达式 var haystack css style css var
  • 如何根据给定的文件夹名称创建多个目录

    我有一个文件列表 这些文件的名称由类组和 ID 组成 eg science 000000001 java 我能够获取所有文件的名称并将它们拆分 因此我将类组放入一个数组中 将 id 放入另一个数组中 我拥有它 以便数组不能有两个相同的值 这
  • 使用带有remote: true 的ajax 的Ruby 表单会给出ActionController::InvalidAuthenticityToken 错误。经典提交不

    我正在为 RoR 网站编写聊天页面 我已经用 HTML 解决了所有问题 并且正在尝试使用 ajax 来实现它 有一个用于提交消息的表格 表单标签读取 我的整个看法 br div align center br span span div
  • Oracle 替换功能

    我需要在选择查询时从表 2 的值中替换表 1 的字段值 Eg Table1 Org Permission Company1 1 3 7 Company2 1 3 8 Table2 Permission Permission 1 Read 3
  • Swiper spaceBetween 无法正常工作

    我正在尝试使用slidesPerView auto with spaceBetween 20财产 但是Swiper https idangero us swiper api 每个视图仅显示一张幻灯片 我想在第一张幻灯片之后显示下一张幻灯片
  • 使用 X,Y 坐标绘制圆内的点

    javascript中有没有一种方法可以绘制x y坐标 使它们落入圆形而不是方形 例如 如果我有以下代码 circleRadius 100 context drawImage img elem dx dy dw dh 我需要计算出落在 10
  • 不安全的指针迭代和位图 - 为什么 UInt64 更快?

    我一直在做一些不安全的位图操作 并发现减少指针的增加次数可以带来一些重大的性能改进 我不确定为什么会这样 即使您在循环中进行了更多的按位运算 但最好还是在指针上进行更少的迭代 例如 不要使用 UInt32 迭代 32 位像素 而是使用 UI
  • Web服务使用kso​​ap方法从应用程序接收空参数

    我见过讨论这个问题的主题 但似乎没有人发布解决方案 目前 我正在测试将参数传递给我的 Net Web 服务 当参数到达 Web 服务时 它会添加一个附加字符串 然后将其返回到我的应用程序 但我返回的只是字符串消息 而不是我传递的参数 我的网
  • 如何在 jasper (iReport) 报告上显示阿拉伯语、希伯来语等语言字体

    我有这个简单的表格报告 其中包含许多不同类型的列 但是当打印报告时rtf 字 扩大 带有数字或日期的列appears on the report 包含阿拉伯语内容的栏目appear on the report 但是当打印报告时PDF扩大 带
  • 如何更改 .NET MAUI 中 TabBar 的选项卡标题字体

    在我的 AppShell xaml 中 我有以下 TabBar 代码 我似乎找不到允许我更改标题字体 和字体大小等 的属性或任何内容
  • 如何签出旧提交并将其设为新提交

    我想 跟进 关于此事的另一个问题 签出旧提交并将其设为新提交 https stackoverflow com questions 3380805 checkout old commit and make it a new commit 但他
  • 如何删除用jquery创建的元素?

    我在 jquery 中编写了这段代码 以在一些事件发生后创建三个元素 body append tmp div div div div appendTo tmp div div appendTo tmp 这三个元素是正常创建的并添加到我的 D
  • Javascript - 表单选择元素在新窗口中打开 url 并提交表单

    UPDATED 请阅读原始问题下面的更多详细信息 我有一个带有各种 url 的选择表单元素 我想在选择时在新窗口中打开 为此 我在元素的 onchange 事件中添加了以下代码 window open this options this s
  • 将链接/模板列添加到自定义表格组件

    我有一个基于本文构建的表格组件 从头开始创建 Angular2 数据表 http 4dev tech 2016 09 creating an angular2 datatable from scratch 我一直在扩展它 所以做我的应用程序
  • 如何为小部件添加轮廓边框?

    如何在 wxpython 中向小部件添加轮廓边框 任何小部件 例如wx Button 对于面板 您可以使用 p wx Panel style wx SUNKEN BORDER 在那里你可以选择常量 wx SIMPLE BORDER wx R
  • 如何找到时间序列的顶部和底部?

    乍一看 这个问题听起来确实很愚蠢 但它并不是根本性的 也许 它看起来似乎无法通过任何算法完全解决 但我假装说它是 所以提问 我有图表 例如黄金 我需要找到时间轴上的顶部和底部在哪里 问题是我需要找到主要的好转和主要的衰退从哪里开始 问题是存
  • TranslateTransform 用于 Silverlight 中的拖放

    我们正在尝试在 Silverlight 3 中实现拖放 我们希望用户能够将元素从树视图拖动到 UI 的另一部分 父元素是 Grid 我们一直在尝试将 TranslateTransform 与 MouseLeftButtonDown Mous