2015-06-30 2 views
1

У меня только общий вопрос относительно проблемы, с которой я столкнулся с помощью масштабирования/позиционирования элементов в wpf. Beacuse Я новичок в wpf, я просто перетаскивал и масштабировал элементы в визуальном предпросмотре приложения. Конечно, это устанавливает маржу для каждого элемента, и теперь, когда я изменяю размер главного окна или запускаю приложение в полноэкранном режиме, все становится испорченным и перекрывается. Теперь я понимаю, что делает маржа и что она очень статична. Каков наилучший способ изменить это на некоторое динамическое позиционирование (строки/столбцы сетки). Я просто понятия не имею.Как избавиться от позиционирования маржи?

+0

Используйте контейнеры вместо таких, как Grid или StackPanel. Что вы пытаетесь достичь? На данный момент этот вопрос слишком широк. – Patrick

+0

У меня есть приложение, работающее в определенном размере. Я хочу иметь его в полноэкранном режиме без какой-либо деформации элемента. Каждый элемент прямо сейчас выглядит следующим образом:

+0

. Затем вы должны использовать сетку с * -высокой и шириной и использовать HorizontalAlignment = "Stretch" на вашем компоненты – Patrick

ответ

1

Чтобы разместить кнопку во второй строке и втором столбце в сетке, вы можете использовать следующий код XAML.

Стоит отметить, в этом примере является то, что * -определением является по отношению к другим * -sizes, поэтому 1* половине размер 2* и так далее.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1*" /> 
     <RowDefinition Height="2*" /> <!-- Make this row double in height --> 
     <RowDefinition Height="1*" /> 
     <RowDefinition Height="1*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> <!-- You don't need a number either --> 
     <ColumnDefinition Width="*" /> <!-- All columns are the same size --> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <Button Grid.Row="1" Grid.Column="1" Content="Hello" /> 
</Grid> 
+0

Просто добавьте еще несколько советов ... Вы можете определить столько строк и столбцов как вы хотите, и если вы не определяете их, то подразумевается, что существует хотя бы один столбец и/или строка «Высота» и «Ширина». Кроме того, если вы не укажете 'Grid.Row' или' Grid.Column' для некоторого элемента управления внутри Grid, тогда он помещается по умолчанию в первый ряд строк и первый столбец. – almulo

+0

Спасибо. Еще один вопрос. Возможно ли, чтобы кнопка содержала более одной ячейки в сетке, например, 2.2, 2.3, 3.2 и 3.3? Или, другими словами, объединить четыре соседние ячейки в одну большую ячейку? – Ivan

+0

Да, вы можете использовать свойства «Grid.RowSpan» и «Grid.ColumnSpan» для каждого элемента – Patrick

0

Вы должны использовать сетку

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

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="100" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="5*" /> 
    </Grid.RowDefinitions> 
</Grid> 

Вы должны взглянуть на this article

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