如何将可移动容器添加到WPF表单?

时间:2013-02-04 18:15:35

标签: wpf

WPF新手所以请保持温和。

希望在C#/ WPF中重写现有的VFP应用程序

所有表单都有容器,而容器又包含文本框,标签等等。

使用此配置允许用户使用鼠标移动容器和包含的控件,在容器内设置焦点以启用和缩小表单等。

因此,不是直接向WPF表单添加控件,而是需要先添加一个可移动容器,然后将控件添加到容器中。

那么从哪里开始?

2 个答案:

答案 0 :(得分:0)

您可以尝试AvalonDock库,看它是否能满足您的要求。

答案 1 :(得分:0)

听起来您正在寻找的主要内容之一是为标准WPF面板/容器添加拖放功能。正如Mash所说,AvalonDock对您有用,特别是如果您有兴趣将面板对接到某些位置。但我还建议你看一下将标签添加到标准WPF面板的选项。这将是一个更轻量级的选项,可以让您快速入门,而不必担心AvalonDock的限制。

当然有许多方法可以实现拖放,但我认为非常方便的功能是适合这项任务的附加“行为”的概念。附加行为基本上允许您“添加”现有WPF控件的功能,而无需更改或扩展实际控件。附加行为有两种基本类型。一个使用WPF附加属性,另一个使用通常称为“混合”行为。如果您只是想开始使用行为来解决您的问题,那么您不一定需要了解这两种方法的所有细微差别,但最终您可能会发现这两种方法都有它们的位置,所以我'建议阅读关于他们的this post

特别是,有一个名为MouseDragElementBehavior的Blend行为允许您向WPF面板添加拖放功能(这里的“e”和“d”是xmlns名称空间前缀):

<Border Background="LightBlue" >
    <e:Interaction.Behaviors>
        <b:DragBehavior/>
    </e:Interaction.Behaviors>
    <TextBlock Text="Drag me around!" />
</Border>

与此类似,您提到了可缩放性,并且another Blend behavior也可能对您有用。

如果您使用Expression Blend,混合行为很容易添加元素,但您也可以在Visual Studio中使用它们。要解释如何执行此操作,请参阅Laurent关于他的magnify behavior

的帖子