WPF新手所以请温柔。
希望用 C#/WPF 重写现有的 VFP 应用程序
所有表单都有容器,这些容器又包含文本框、标签等。
使用此配置,用户可以使用鼠标移动容器和包含的控件,在容器内设置焦点以启用放大和缩小表单等。
因此,不是直接将控件添加到 WPF 表单中,而是需要先添加一个可移动的容器,然后再将控件添加到容器中。
那么从哪里开始呢?
WPF新手所以请温柔。
希望用 C#/WPF 重写现有的 VFP 应用程序
所有表单都有容器,这些容器又包含文本框、标签等。
使用此配置,用户可以使用鼠标移动容器和包含的控件,在容器内设置焦点以启用放大和缩小表单等。
因此,不是直接将控件添加到 WPF 表单中,而是需要先添加一个可移动的容器,然后再将控件添加到容器中。
那么从哪里开始呢?
你可以试试AvalonDock库,看看它是否能满足你的要求。
听起来您正在寻找的主要内容之一是为标准 WPF 面板/容器添加拖放功能。正如 Mash 所说,AvalonDock 可能对您有用,特别是如果您有兴趣将面板停靠在某些位置。但我还建议您查看仅向标准 WPF 面板添加可拖动性的选项。这将是一个轻量级的选项,可以让您快速入门,而不必担心 AvalonDock 的限制。
当然有很多方法可以实现拖放,但我认为非常适合此任务的非常方便的功能是附加“行为”的概念。附加行为基本上允许您向现有 WPF 控件“添加”功能,而无需更改或扩展实际控件。依附行为有两种基本类型。一种使用 WPF 附加属性,另一种使用通常称为“混合”的行为。如果你只是想开始使用一种行为来解决你眼前的问题,你不一定需要了解这两种方法的所有细微差别,但最终你可能会发现这两种方法都有它们的位置,所以我' d 建议阅读这篇关于它们的文章。
特别是,有一个名为MouseDragElementBehavior的混合行为,它允许您向 WPF 面板添加拖放功能(这里的“e”和“d”是 xmlns 命名空间前缀):
<Border Background="LightBlue" >
<e:Interaction.Behaviors>
<b:DragBehavior/>
</e:Interaction.Behaviors>
<TextBlock Text="Drag me around!" />
</Border>
同样,您提到了可缩放性,还有另一种混合行为可能对您有用。
如果您使用的是 Expression Blend,则混合行为很容易添加元素,但您也可以将它们与 Visual Studio 一起使用。要解释如何做到这一点,请参阅 Laurent 关于他的放大行为的部分帖子。