дубль 2:
Спасибо за пример XAML. Делает это намного проще, чем угадывать.
Необходимо внести ряд изменений.
- Сначала нужно удалить исправленный
ширина и высота от вашего внешнего
сетки, как упоминалось ранее.
- Следующий левый столбец должен иметь автоматическую ширину, поскольку ряд кнопок определяет ширину левой стороны.
- Правый столбец должен быть просто 1 * (или просто *), чтобы использовать оставшееся пространство столбца.
- Средний ряд должен быть либо автоматическим (чтобы соответствовать ряду кнопок), либо фиксированной высотой пикселя. Поскольку у вас есть текстовое поле справа, перекрывающее эту строку, auto вызовет проблемы, если вы добавите разделитель позже, поэтому я рекомендую фиксированную высоту пикселя 40.
- Первый и последний ряд должны быть * по высоте. Затем они используют 50% оставшейся высоты.
- Кнопки должны находиться на панели стека (как упоминалось в другом ответе), а информационный текст - в сетке на панели стека.
Если вы измените размер, они должны измениться согласно рисункам ниже:
Обновлен XAML ниже:
<Grid x:Name="LayoutRoot" Background="White">
<Grid HorizontalAlignment="Stretch" Name="grid1" VerticalAlignment="Stretch" ShowGridLines="False">
<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="40" />
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="510" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<local:WatermarkedTextBox Watermark="Source" Margin="12,6,8,8" Name="tbCode" AcceptsReturn="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" FontFamily="Courier New" FontSize="12" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" KeyDown="tbCode_KeyDown" IsTabStop="True" />
<TextBox Grid.Column="1" Watermark="Output" AcceptsReturn="True" Margin="9,6,15,8" Name="tbOutput" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" VerticalAlignment="Stretch" FontFamily="Courier New" FontSize="12" />
<TextBox Grid.Row="1" Grid.Column="1" Watermark="Stack" Grid.RowSpan="2" AcceptsReturn="True" Margin="9,6,15,6" Name="tbStack" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" d:LayoutOverrides="GridBox" VerticalAlignment="Stretch" FontFamily="Courier New" FontSize="12" />
<TextBox Grid.Row="2" Grid.Column="0" Watermark="Command line args, one per line. Strings/arrays wrapped in quotes" AcceptsReturn="True" HorizontalScrollBarVisibility="Auto" Margin="12,8,8,6" Name="tbArgs" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto" FontFamily="Courier New" FontSize="12" />
<StackPanel Orientation="Horizontal" Grid.Row="1" d:LayoutOverrides="Width" HorizontalAlignment="Left" Margin="12,0,0,0">
<Button Content="Run" Height="23" Margin="5,0,0,0" x:Name="btnRun" VerticalAlignment="Center" Width="75" Click="btnRun_Click" />
<Button Content="Step Forward" Height="23" Margin="5,0,0,0" x:Name="btnStep" VerticalAlignment="Center" Width="115" Click="btnStep_Click" />
<Button Content="Stop" Height="23" HorizontalAlignment="Left" Margin="5,0,0,0" x:Name="btnStop" VerticalAlignment="Center" Width="75" Click="btnStop_Click" IsEnabled="False" />
<Button Content="Clear All" Height="23" Margin="5,0,0,0" x:Name="btnClear" VerticalAlignment="Center" Width="75" Click="btnClear_Click" />
<Grid Width="107" Margin="13,0,0,0">
<local:WatermarkedTextBox Height="23" HorizontalAlignment="Left" x:Name="lblCurrPos" Text="Current Position:" VerticalAlignment="Top" />
<local:WatermarkedTextBox HorizontalAlignment="Left" Margin="0,17,0,0" x:Name="lblChar" Text="Char: 0" VerticalAlignment="Top" d:LayoutOverrides="HorizontalAlignment" />
<local:WatermarkedTextBox Height="23" HorizontalAlignment="Left" Margin="57,17,0,0" x:Name="lblSymbol" Text="Symbol: " VerticalAlignment="Top" />
</Grid>
</StackPanel>
</Grid>
</Grid>
Взять 1:
Общий размер оболочки Silverlight определяется настройками на странице веб-хостинга и по умолчанию использует полный браузер, поэтому проблема, скорее всего, заключается в вашем контроле или, скорее, в сетке внутри элемента управления.
- Убедитесь, что у вас нет фиксированного размера, указанного в пользовательском элементе управления или во внутренней сетке. Тогда оба по умолчанию растягиваются на родителя.
- Исключение составляют все ваши столбцы.
фиксированной ширины, то сетка будет
свернуть обратно к общей ширине
столбцы, или если оба "авто" ширина в
в этом случае столбцы рухнут
на ширину объектов внутри
их (и не заставляйте их растягиваться).
- Убедитесь, что хотя бы один из ваших столбцов сетки имеет звездообразный размер (например, 1 *), чтобы он занимал оставшееся пространство сетки. Если вы хотите, чтобы каждый столбец занимал 50% браузера, сделайте их шириной 1 *.
Если вы можете опубликовать свой образец XAML, вам будет проще предоставить точное исправление.