C# WPF how to set location,width and height of the controls programmatically?

烈酒焚心 提交于 2019-11-29 18:17:29

问题


I'm doing my first WPF application. im having problem whereby when my form is maximized or fullscreen, my controls wont resize and just stay in the same location. only the form is maximized.

in winform, I can do the adjustment in the .cs like the following:

panel6.Width
panel6.Height
panel6.Location

this will help me set it if my form is maximized. I do it by using some arithmetics where I get the resolution of screen and some calculation and get the value and can set it to the width, height and location. BUT THIS IS IN WINFORM.

how will I tackle this issue for maximized and fullscreen in WPF? is there a way to be done through the .cs file programmatically? or does WPF come with a easy built in control to tackle this issue?

suppose for this example I'm using dockpanel in the WPF.

it will be pointless if window is maximized but the other controls remains.


回答1:


To set Width and Height:

dockpanel1.width = 230;
dockpanel1.height = 230;

as for location, wpf uses Margin:

dockpanel1.Margin = new Thickness(0,440,836,40);



回答2:


It is possible to programmatically move child elements on a Canvas.

In xaml:

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>

In C#:

Canvas.SetTop(YourElement, newX);
Canvas.SetLeft(YourElement, newY);



回答3:


Use some calculations like (control's previous position * layout's new size) / layout's previous size = control's new position

But the easiest way is to use XAML Use Grid and put columns and rows in it and set the size of columns and rows to * So on layout size change, your controls will reposition in refer to parent's change in size which your grid is child of it. And you could even have auto resizable controls just by setting the controls' margins in columns and rows. Don't forget horizontal and vertical alignments set to stretch.




回答4:


For your specific problem, would recommend you to use a DockPanel and place your controls in it. Here's first bing result: WPF Tutorial | Dock Panel

And as already suggested by flq and blindmeis, do study the layout panels. That will make your life really simpler in WPF.




回答5:


you should look at all the different layoutpanels in wpf (Grid, DockPanel, StackPanel, Canvas ...)

so if you set any properties for your Panel, it behaves different if your LayoutPanel change.




回答6:


If you want explicitly position your child items use Canvas panel

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>


来源:https://stackoverflow.com/questions/5947559/c-sharp-wpf-how-to-set-location-width-and-height-of-the-controls-programmaticall

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!