1
votes

I'm making a WPF Hud, and I'm not such a WPF expert.

I need a Window with draggable usercontrols and which are auto-resized when I expand/reduce the Window.

I can achieve the first feature by using a Canvas container and using MouseMove event of the Window.

I can achieve the second feature by using a Grid container and setting childrens both properties HorizontalAlignment VerticalAlignment to Strech.

Of course I cannot use both containers, so is there a third container that can help me on doing such what requested?

Actually I'm trying to use the Canvas and determining the width/height of the childrens manually, but I don't like this approach.

Any suggestion?

Thanks, Luca

1
You might want to refer to: stackoverflow.com/questions/855334/…Mir
Already saw this, but the answer is about resizing the CANVAS, not the childrens :( I wanted to see if there was any container which could do the work without manual codeLuca Trazzi

1 Answers

1
votes

Leaving out the details on dragging controls, etc., try something like:

<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>

This will create a Canvas object with an initial size of 600x400. When you resize the window the canvas and the objects within it will be scaled so that they take up the same amount of relative space. You'll need to size the containing Window appropriately as well...normal resizable windows have 39 pixels of chrome vertically and 16 pixels horizontally, so take that into account.