Изменить размер приложения WPF - PullRequest
1 голос
/ 12 сентября 2011

Пробовал поискать в гугле, но я изо всех сил пытаюсь найти ответ на этот вопрос.

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

Есть ли способ заставить элементы управления динамически увеличиваться и уменьшаться в зависимости от размера главного окна?

С уважением

Ясень

Ответы [ 6 ]

4 голосов
/ 12 сентября 2011

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

Например-

Фиксированный размер сетки:

<Grid Background="Red" Width="50" Height="50"/>

Динамически расширяющаяся сетка:

<Grid Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
2 голосов
/ 12 сентября 2011

вам нужно не изменять размер, это называется масштабированием (или масштабированием); -)

Прочитайте эту статью; с WPF задача очень тривиальная.

(раньше было гораздо сложнее в Windows Forms ...).

Масштабирование пользовательского интерфейса (масштабирование пользовательского интерфейса) с WPF

В основном все, что вам нужно добавить в XAML, это:

 <ScaleTransform 
            CenterX="0" CenterY="0"
            ScaleX="{Binding ElementName=uiScaleSlider,Path=Value}"
            ScaleY="{Binding ElementName=uiScaleSlider,Path=Value}"
        />

после этого вы можете использовать колесико мыши или ползунок или любым другим способом (как в вашем случае развернутая форма обнаружения), чтобы изменить Value ScaleTransform.

1 голос
/ 12 сентября 2011

это не проблема.Поведение ваших элементов управления зависит от контейнера, который вы используете, а также от горизонтального и вертикального выравнивания.Например, если вы используете сетку, текстовое поле и кнопку с горизонтальным и вертикальным выравниванием: автоматическое растягивание по ширине и высоте, текстовое поле и кнопка будут динамически увеличиваться и уменьшаться.

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">

<Grid x:Name="LayoutRoot">
            <TextBox Margin="8,8,8,104.96" TextWrapping="Wrap" Text="TextBox" Height="auto" Width="auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
            <Button Content="Button" Margin="8,0,8,8" VerticalAlignment="Bottom" Height="92.96" Width="auto" HorizontalAlignment="Stretch"/>

</Grid>

1 голос
/ 12 сентября 2011

Вы можете использовать декоратор контента, который может растягивать и масштабировать одного дочернего элемента, чтобы заполнить доступное пространство - Viewbox.

http://www.wpftutorials.com/2011/04/wpf-viewbox.html

1 голос
/ 12 сентября 2011

Там, где есть воля, есть способ.Однако вам придется выполнить некоторую работу самостоятельно. WPF не может автоматически определить для вас, каким именно образом вы хотите выполнить изменение размера.

Некоторые соответствующие источники:

0 голосов
/ 02 апреля 2014

Используйте элемент управления с изменяемым размером, такой как Grid, и поместите все элементы управления в строки / столбцы. Также установите HorizontalAlignment для растягивания для каждого элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...