WPF 窗口中的可拖动和自动调整用户控件

Posted

技术标签:

【中文标题】WPF 窗口中的可拖动和自动调整用户控件【英文标题】:Draggable and Auto-Resized UserControls in WPF Window 【发布时间】:2012-12-04 14:30:28 【问题描述】:

我正在制作 WPF Hud,但我不是 WPF 专家。

我需要一个带有可拖动用户控件的窗口,并且在我展开/缩小窗口时会自动调整其大小。

我可以通过使用 Canvas 容器并使用 Window 的 MouseMove 事件来实现第一个功能。

我可以通过使用 Grid 容器并将子项的两个属性 Horizo​​ntalAlignment VerticalAlignment 设置为 Strech 来实现第二个功能。

当然我不能同时使用这两个容器,那么是否有第三个容器可以帮助我完成所要求的操作?

实际上我正在尝试使用 Canvas 并手动确定儿童的宽度/高度,但我不喜欢这种方法。

有什么建议吗?

谢谢, 卢卡

【问题讨论】:

您可能想参考:***.com/questions/855334/… 已经看到了,但答案是调整 CANVAS 的大小,而不是孩子的 :( 我想看看是否有任何容器可以在没有手动代码的情况下完成工作 【参考方案1】:

省略有关拖动控件等的详细信息,请尝试以下操作:

<Window x:Class="AdHocWpf.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="439" Width="616"
    Title="MainWindow">
    <Viewbox>
        <Canvas Width="600" Height="400" Background="Blue">
            <Rectangle Stroke="Orange" Width="200" Height="100" Canvas.Left="10" Canvas.Top="5"/>
            <Ellipse Stroke="Yellow" Width="350" Height="200" Canvas.Left="225" Canvas.Top="150"/>
        </Canvas>
    </Viewbox>
</Window>

这将创建一个初始大小为 600x400 的 Canvas 对象。当您调整窗口大小时,画布和其中的对象将被缩放,以便它们占用相同数量的相对空间。您还需要适当地调整包含窗口的大小...正常可调整大小的窗口垂直有 39 像素,水平有 16 像素,因此请考虑到这一点。

【讨论】:

非常感谢,这就是答案!谢谢! ;)

以上是关于WPF 窗口中的可拖动和自动调整用户控件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用户控件像窗口一样在屏幕上可拖动

没有边框的可拖动 WPF 窗口

wpf怎么自定义窗口

WPF 用户控件中的数据绑定

WPF 自动调整字体大小,直到它适合父控件

C# WPF 可拖动用户控件在 Canvas 上的 ListBox 中