2012-06-06 2 views
1

Эй, все, что я пытаюсь найти примеры того, как делать автоматическую калибровку элементов управления, которые у меня есть в элементе управления сеткой, если размер экрана пользователя больше, чем размер по умолчанию.WPF Сетка разрешает управление внутри до размера авто ширины/высоты

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

Мой текущий код:

<Window x:Class="Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="768" Width="1024"> 
    <Grid> 
     <Grid Height="115" Margin="190,0,195,145" Name="Grid1" VerticalAlignment="Bottom" Background="Cyan"> 
      <Button Height="45" HorizontalAlignment="Left" Margin="10,10,0,0" Name="Button4" VerticalAlignment="Top">Button</Button> 
      <Button Height="45" HorizontalAlignment="Left" Margin="101,10,0,0" Name="Button5" VerticalAlignment="Top">Button</Button> 
      <Button Height="45" HorizontalAlignment="Left" Margin="192,10,0,0" Name="Button6" VerticalAlignment="Top">Button</Button> 
      <Button Height="45" HorizontalAlignment="Right" Margin="280,10,257,0" Name="Button7" VerticalAlignment="Top">Button</Button> 
      <Button Height="45" HorizontalAlignment="Right" Margin="0,10,166,0" Name="Button8" VerticalAlignment="Top">Button</Button> 
      <Button Height="45" HorizontalAlignment="Right" Margin="0,10,75,0" Name="Button9" VerticalAlignment="Top">Button</Button> 
      <Button Height="45" HorizontalAlignment="Left" Margin="10,0,0,9" Name="Button10" VerticalAlignment="Bottom">Button</Button> 
      <Button Height="45" HorizontalAlignment="Left" Margin="101,0,0,9" Name="Button11" VerticalAlignment="Bottom">Button</Button> 
      <Button Height="45" HorizontalAlignment="Left" Margin="192,0,0,9" Name="Button12" VerticalAlignment="Bottom">Button</Button> 
      <Button Height="45" HorizontalAlignment="Right" Margin="280,0,257,9" Name="Button13" VerticalAlignment="Bottom">Button</Button> 
      <Button Height="45" HorizontalAlignment="Right" Margin="0,0,166,9" Name="Button14" VerticalAlignment="Bottom">Button</Button> 
      <Button Height="45" HorizontalAlignment="Right" Margin="0,0,75,9" Name="Button15" VerticalAlignment="Bottom">Button</Button> 
     </Grid> 
    </Grid> 
</Window> 

Любая помощь будет здорово! Благодаря!

+0

Возможно, вам нужно только «UniformGrid» с двумя строками и стиль Button для Margin. – LPL

ответ

4

Похоже, что вы не используете сетку так, как она была предназначена.

Если вы хотите, чтобы ваш пользовательский интерфейс динамически изменял размер с помощью окна, вы не должны иметь (или, по крайней мере, минимизировать) количество жестко закодированных ширин и высот. Первая проблема, которую я вижу, заключается в том, что внутренняя сетка имеет жесткую кодированную высоту 127, поэтому независимо от размера окна, эта сетка всегда будет такой высотой. Удаление этой высоты является хорошим первым шагом.

Я также не уверен, почему есть две сетки - не все ли кнопки могли быть дочерними элементами внешней сетки?

Наконец, вы не определяете какие-либо строки или столбцы в сетке. Я думаю, вы пытались использовать свойства VerticalAlignment и HorizontalAlignment на отдельных кнопках, чтобы контролировать, где они находятся в окне. Гораздо лучше определить строки и столбцы на основе того, где вы хотите, чтобы кнопки были. MSDN имеет пример использования сетки с несколькими строками и столбцами.

+0

Хорошо, я обновил OP с некоторыми изменениями в коде. Но он все еще не меняется, когда я делаю форму более крупной. Сетка имеет размер в большую сетку, но не кнопки. – StealthRT

+0

@StealthRT Вы пытались определить строки и столбцы и назначить им кнопки? – Andy

+0

Я пытался это сделать, но он не дает мне никаких видимых строк? ** <Высота сетки = "115" Маржа = "190,0,195,145" Название = "Grid1" VerticalAlignment = "Bottom" Background = "Cyan" Grid.Column = "10" Grid.Row = "10"> ** – StealthRT

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