WPF элементы авторазмера - PullRequest
2 голосов
/ 05 июня 2011

Когда размер окна приложения изменяется, я хочу, чтобы элементы в нем тоже менялись пропорционально.Это возможно?Я попробовал поискать в Google, но не смог найти ничего, связанного с этим.Мой код XAML:

<Window x:Class="app.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" KeyDown="Window_KeyDown">
    <Grid>
        <TabControl Name="MyTabControl">
            <TabItem Name="pradzia" Header="Pradžia" IsSelected="True">
                <Button Content="Pradžia" Height="55" Name="button1" Width="125" Click="button1_Click" />
            </TabItem>
            <TabItem Header="Vykdyti" Name="vykdyti" IsEnabled="False">
                    <Grid Button.Click="Grid_Click">
                    <Button Content="1" Height="50" HorizontalAlignment="Left" Margin="6,0,0,6" Name="button2" VerticalAlignment="Bottom" Width="125" FontSize="20" />
                        <Button Content="2" Height="50" HorizontalAlignment="Center" Name="button3" VerticalAlignment="Bottom" Width="125" FontSize="20" Margin="184,0,184,6" />
                    <Button Content="3" Height="50" HorizontalAlignment="Right" Margin="362,0,0,6" Name="button4" VerticalAlignment="Bottom" Width="125" FontSize="20" />
                        <TextBlock Height="23" HorizontalAlignment="Center" Name="textBlock1" Margin="0,15,0,0" Text="Kiek gyvūnų paveiksliuke?" VerticalAlignment="Top" FontSize="16" />
                    <Image Height="150" HorizontalAlignment="Center" Margin="0,-25,0,0" Name="mainImage" Stretch="Uniform" VerticalAlignment="Center" Width="200" />
                </Grid>
            </TabItem>
        </TabControl>
    </Grid>
</Window>

Ответы [ 2 ]

3 голосов
/ 05 июня 2011

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

например

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3*"/>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="3*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="3*"/>
        <RowDefinition Height="2*"/>
        <RowDefinition Height="3*"/>
    </Grid.RowDefinitions>
    <!-- Note that width and height are not set to make it size to the grid cell -->
    <Button Grid.Row="1" Grid.Column="1" Content="Lorem Ipsum"/>
  </Grid>
</Window>

( Вы можете попробовать это в Kaxaml )


Если при пропорциональном изменении размера вы на самом деле имеете в виду размер, а не выделенное пространство макета, используйте Viewbox.

1 голос
/ 05 июня 2011

Любые элементы управления, размер которых вы хотите изменить (например, кнопки), не должны иметь ширину или высоту, определенные в вашем XAML. Если им нужен минимальный размер, используйте MinWidth и MinHeight

...