c # WPF, как программно установить местоположение, ширину и высоту элементов управления? - PullRequest
9 голосов
/ 10 мая 2011

я делаю свое первое приложение WPF.У меня возникла проблема, из-за которой, когда моя форма развернута или развернута на весь экран, мои элементы управления не изменят размер и просто останутся в том же месте.максимизируется только форма.

в winform, я могу выполнить настройку в .cs следующим образом:

panel6.Width
panel6.Height
panel6.Location

это поможет мне установить его, если моя форма будет максимизирована.iсделать это с помощью некоторой арифметики, где я получаю разрешение экрана и некоторые вычисления и получаю значение и могу установить его ширину, высоту и местоположение.НО ЭТО В WINFORM.

Как мне решить эту проблему для развернутого и полноэкранного режима в WPF?Есть ли способ сделать через файл .cs программно?или WPF поставляется с простым встроенным элементом управления для решения этой проблемы?

предположим, что для этого примера я использую панель док-станции в WPF.

будет бессмысленно, если окно развернуто, но другие элементы управленияостается.

есть идеи?

Ответы [ 6 ]

24 голосов
/ 11 мая 2011

Для установки Ширина и Высота :

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

как для местоположения, wpf использует Маржа :

dockpanel1.Margin = new Thickness(0,440,836,40);
12 голосов
/ 17 декабря 2013

Можно программно перемещать дочерние элементы на холсте.

В xaml:

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

В C #:

Canvas.SetTop(YourElement, newX);
Canvas.SetLeft(YourElement, newY);
2 голосов
/ 22 июля 2014

Используйте некоторые вычисления, такие как (предыдущая позиция элемента управления * новый размер макета) / предыдущий размер макета = новая позиция элемента управления

Но самый простой способ - использовать XAML Use Grid, поместить в него столбцы и строки и установитьразмер столбцов и строк в * Таким образом, при изменении размера макета ваши элементы управления будут перемещаться в соответствии с изменением размера родителя, которое является вашей дочерней сеткой.И вы могли бы даже иметь элементы управления с автоматическим изменением размера, просто устанавливая поля элементов управления в столбцах и строках.Не забывайте, горизонтальные и вертикальные выравнивания установлены на растяжение.

1 голос
/ 10 мая 2011

Для вашей конкретной проблемы рекомендуется использовать DockPanel и поместить в нее элементы управления.Вот первый результат Bing: WPF Tutorial |Панель Dock

И, как уже предложили flq и blindmeis, изучите панели макетов.Это сделает вашу жизнь намного проще в WPF.

0 голосов
/ 10 июня 2011

Если вы хотите явно расположить свои дочерние элементы, используйте панель Canvas

<Canvas>
    <YourElement Canvas.Top="x" Canvas.Left="y"/>
</Canvas>
0 голосов
/ 10 мая 2011

вы должны посмотреть на все различные макеты в wpf (Grid, DockPanel, StackPanel, Canvas ...)

поэтому, если вы установите какие-либо свойства для своей панели, она будет вести себя иначе, если ваша LayoutPanel изменится.

...