Определение размера контента в соответствии с разрешением экрана - PullRequest
7 голосов
/ 11 июля 2009

привет, у меня есть окно (wpf) с метками и текстовыми полями, я хочу, чтобы он максимально соответствовал разрешению экрана, как мне это сделать

Ответы [ 4 ]

25 голосов
/ 14 июля 2009

Viewbox весьма полезен, если вам необходимо пропорционально масштабировать содержимое вашего окна при изменении размера окна (например, увеличить его). На этой минималистичной странице

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Viewbox>
        <StackPanel>
            <TextBlock FontSize="14">Example</TextBlock>
            <Border Background="Aqua" Width="100" Height="100"></Border>                    
        </StackPanel>
    </Viewbox>
</Window>

у вас есть TextBlock и цветная граница, сложенные вертикально; если вы запустите этот xaml, окно будет иметь размер 300x300, шрифт TextBlock будет иметь размер 14, а цветная рамка будет 100x100. Если вы измените масштаб окна, вы увидите соответственно TextBlock и Border Scale (так что они не будут больше того размера, который вы указали в xaml), сохраняя относительные пропорции. Viewbox действительно полезен, в этом отношении, если вам нужно окно, расположение внутренних компонентов которого всегда выглядит одинаково, независимо от конечного разрешения, которое будет отображаться (что имеет значение, это соотношение сторон, мысль) Это очевидно работает с любым содержимым, которое вы поместите в Viewbox (у нас было приложение с видео и 3D-представлениями, например). Обратите внимание, что в Visual Studio 2008 вы не сможете видеть содержимое Viewbox в Designer.

Надеюсь, эта помощь.

2 голосов
/ 12 июля 2009

Если вы хотите по-настоящему масштабировать все, включая размеры шрифта, вы, вероятно, можете применить масштабное преобразование к своему контенту и привязать его значения X и Y к ширине и высоте окна. Затем вам также потребуется преобразователь значений для преобразования их в соответствующий масштаб.

1 голос
/ 12 июля 2009

Если вы хотите масштабировать все до размера окна, просто поместите все в элемент управления Viewbox.

0 голосов
/ 11 июля 2009

Вы хотите сказать, что хотите, чтобы окно заполнило весь экран? Самый простой способ сделать это (не вызывая дальнейших головных болей) - это максимизировать окно.

w.WindowState = WindowState.Maximized;

EDIT:

Масштабируемое расположение окон требует, чтобы вы не использовали редактор XAML в Visual Studio! На самом деле вы можете сделать это в редакторе, но это очень сложно.

Гораздо проще написать XAML от руки:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <Label Grid.Column="0" Grid.Row="0">First Name</Label>
    <TextBox Grid.Column="1" Grid.Row="0" Name="firstName">Fred</TextBox>
    <Label Grid.Column="0" Grid.Row="1">First Name</Label>
    <TextBox Grid.Column="1" Grid.Row="1" Name="lastName">Smith</TextBox>
</Grid>

Размер будет соответствовать размеру окна, хотя может показаться странным, поскольку строки и столбцы по умолчанию получают по половине пространства каждый Вы можете переопределить это, чтобы они имели высоту, определяемую их содержимым:

<RowDefinition Height="Auto"/>

Также может помочь наложение полей на некоторых элементах управления, чтобы их разнести:

<TextBox Grid.Column="1" Grid.Row="1" Margin="6" Name="lastName">Smith</TextBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...