2012-12-17 31 views
0

我正在制作一个WPF Hud,而我并不是这样的WPF专家。WPF窗口中的可拖动和自动调整大小的UserControls

我需要一个可拖动usercontrols的窗口,并且在展开/缩小窗口时自动调整大小。

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

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

当然,我不能使用这两个容器,那么是否有第三个容器可以帮助我做这样的要求?

其实我试图使用画布和手动确定儿童的宽度/高度,但我不喜欢这种方法。

有什么建议吗?

感谢, 卢卡

+0

您可能想要参考:http://stackoverflow.com/questions/855334/wpf-how-to-make-canvas-auto-resize – Mir

+0

已经看到了这一点,但答案是关于调整CANVAS的大小,而不是孩子:(我想看看是否有任何容器可以做这个工作,没有手工代码 –

+0

尝试使用viewbox – JSJ

回答

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> 

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

+0

非常感谢你,这是答案!谢谢!) –

相关问题