2016-08-04 6 views
0

Я пытаюсь создать приложение в Visual Studio 2015. Я своего рода новичок, поэтому не знаю многого. Как видно из названия, у меня возникают проблемы с изменением размера кнопок и элементов страницы до размера фрейма. Вот мой код XAML:Динамическое изменение размера страницы и атрибутов C# Visual Studio 2015

<Page 
x:Class="Rodojo_start.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:Rodojo_start" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d"> 
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto"></RowDefinition> 
     <RowDefinition Height="*"></RowDefinition> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <RelativePanel> 
     <Button Width="320" Height="45" Name="Manage_btn" Click="Manage_btn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE136;" Margin="0,0,0,0"></Button> 
    </RelativePanel> 
    <RelativePanel> 
     <Button Width="320" Height="45" Name="Sale_btn" Click="Sale_btn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE125;" Margin="320,0,0,0"></Button> 
    </RelativePanel> 
    <RelativePanel> 
     <Button Width="320" Height="45" Name="settingsbtn" Click="settingsbtn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE115;" Margin="640,0,0,0"></Button> 
    </RelativePanel> 
    <RelativePanel> 
     <Button Width="320" Height="45" Name="aboutbtn" Click="aboutbtn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE11B;" Margin="960,0,0,0"></Button> 
    </RelativePanel> 
</Grid> 

Прямо сейчас, все кнопки 320 пикселей в ширину. Я хочу, чтобы они сами изменяли размер, но все же держали их в верхней части экрана. Я попробовал часть «ViewBox». Это изменило размер, но поместил кнопки в середину экрана.

Любая помощь будет принята с благодарностью.

Спасибо.

+0

Контейнеры управления макетами для детских элементов управления. Я не знаю, что вам нужно/что вы получаете (я знаю, что WPF приправил xaml, не UWP'd), но выглядит странно, обертывая все ваши кнопки с помощью RelativePanels и тот факт, что вы определяете строки и столбцы, но вы не устанавливаете Grid.Row = "..." для любых дочерних элементов управления. – Will

+0

Неправильно ли это обертывание всего в Относительных панелях? – user45899

+0

Dunno, это не элемент управления WPF. Почему?Согласно документам, вы помещаете несколько элементов управления в RelativePanel, а затем размещаете их ... ** relative ** друг к другу. Почему это происходит, когда у вас есть только один элемент управления? Попробуйте это: настройте столбцы/строки сетки так, как вы думаете, что они должны выглядеть (например, «Мне нужен макет tic-tac-toe - 3 четные строки, 3 столбца), затем вытащите ваши кнопки из своих RelativePanels и скажите им, где в сетке каждый живет (например, «Grid.Row =« 2 »Grid.Column =« 2 »' для нижнего левого края поля tic-tac-toe). – Will

ответ

0

Я лично считаю, что решение ViewBox довольно запутанно. Трудно понять, как будут меняться размеры элементов управления.

В WPF Grid, DockPanel и UniformGrid могут автоматически изменять размер их содержимого. Вы начали использовать Grid для определения вашего макета. Ну, просто продолжайте! Чтобы сетка могла изменить размер содержимого, она будет зависеть от того, как вы устанавливаете высоту и ширину своих строк и столбцов.

В вашем случае:

<Grid.RowDefinitions> 
    <RowDefinition Height="auto"></RowDefinition> 
    <RowDefinition Height="*"></RowDefinition> 
</Grid.RowDefinitions> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*"></ColumnDefinition> 
</Grid.ColumnDefinitions> 

Настройка высоты или ширины к "Auto", сетка будет изменен до размера их содержимого. Установив его на "*", сетка будет изменена до количества свободного места. Установка некоторой строки с определенной высотой, такой как "45", будет держать строку в 45 независимо от того, что.

Вы можете также использовать MinHeight/MaxHeight и MinWidth/MaxWidth для определения размеров строк и столбцов, которые получат изменение сетки, но с учетом размеров max или min.

Поэтому, мое предложение: удалите RelativePanels и определите сетку макета. Если вы хотите автоматически изменять размер содержимого, не указывайте конкретные размеры, а используйте "Auto", "*", MaxHeight, MinHeight, MaxWidth, MinWidth. Даже ваши кнопки. Если вы установили для вашей кнопки ширину 45, ваша кнопка будет содержать ширину 45, когда изменилось!

Надежда Я помог, вот еще один источник: How to make all controls resize accordingly proportionally when window is maximized?

0

Хорошо, я понял это из всего выше. Вот мой конечный код:

<Page 
    x:Class="Rodojo_start.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:Rodojo_start" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="auto"></RowDefinition> 
      <RowDefinition Height="*"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <Button Name="Manage_btn" Click="Manage_btn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE136;" Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
     <Button Name="Sale_btn" Click="Sale_btn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE125;" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="1"/> 
     <Button Name="settingsbtn" Click="settingsbtn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE115;" Margin="0" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
     <Button Name="aboutbtn" Click="aboutbtn_Click" FontFamily="Segoe MDL2 Assets" Content="&#xE11B;" Margin="0" Grid.Column="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
    </Grid> 
</Page> 

Он работает именно так, как я хотел, чтобы он работал. Еще раз спасибо за все!

 Смежные вопросы

  • Нет связанных вопросов^_^