【问题标题】:dynamic floating user controls wpf动态浮动用户控件 wpf
【发布时间】:2016-04-21 15:30:48
【问题描述】:

我想创建一个用户控件,它可以在应用程序运行时通过拖放进行动态移动(类似于 Visual Studio 界面上的不同视图窗口)。

一旦应用程序运行,这样的事情是否可以实现或控件被“锁定”?

【问题讨论】:

  • 仅供参考,编码 ui 非常复杂。您可能会在很短的时间内发现自己已经超越了自己。
  • 是的,如果您知道自己在做什么,这是可能的并且相对容易做到。例如,如果您在画布中放置一个控件,您可以轻松更改它的Canvas.LeftCanvas.Top 属性以更改控件在画布中的位置。

标签: c# wpf mvvm user-controls window


【解决方案1】:

您需要的是 WPF Thumb 控件。这是您应该能够适应您的目的的答案:Drag and drop an image in WPF

当用户点击Thumb 并拖动它时,它会反复触发DragDelta 事件。他给拖动的控件一个名为translateTransformTranslateTransform,在DragDelta 处理程序中,他只是将更改值添加到变换的XY

private void MyRootDragDelta(object sender, DragDeltaEventArgs e) 
{
    translateTransform.X += e.HorizontalChange;
    translateTransform.Y += e.VerticalChange;
}

如果您想将运动范围限制在某个父级的范围内,您可以使用Math.Min()Math.Max() 并查看父级和子级的ActualWidthActualHeight(除非有在纯 XAML 中执行此操作的一些聪明方法,但我不知道)。你可以改用Canvas.SetLeft(ctl)Canvas.SetRight(ctl)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多