2013-12-03 1 views
0

правый код XAML выглядит следующим образом:Как разместить два разных текстовых поля на одном уровне?

mc:Ignorable="d" d:DesignWidth="363" Height="628"> 
    <Grid Style="{StaticResource ContentRoot}"> 
     <ScrollViewer Margin="0,-105,-9,0"> 
      <StackPanel MinWidth="200" HorizontalAlignment="Left" Width="474" Height="459"> 


      </InlineUIContainer> 
      <Run Language="ru-ru"/> 
      <LineBreak/> 
      <Run Language="ru-ru" Text="Num1"/> 
      <LineBreak/> 
      <InlineUIContainer> 
       <TextBox d:DesignUseLayoutRounding="True" 
         Width="160" 
         UseLayoutRounding="True" 
         Text="Enter num" 
         TextWrapping="Wrap" 
         x:Name="TxtBlock_numRequest" 
         InputMethod.IsInputMethodEnabled="False" 
         Height="23" 
         AutoWordSelection="True"/> 
      </InlineUIContainer> 
      <LineBreak/> 
      <Run Language="ru-ru"/> 
      <LineBreak/> 
      <Run Language="ru-ru" Text="ID"/> 
      <Run Text=" "/> 
      <LineBreak/> 
      <InlineUIContainer> 
       <TextBox Width="160" 
         Text="Enter num" 
         TextWrapping="Wrap" 
         x:Name="TxtBlock_IDWork" 
         Height="23"/> 

Как вы можете есть два Textboxes, которые расположены один под другой, и мне нужно, чтобы поместить их в одном уровне, я попытался его с помощью конструктора, это просто не делайте этого в моем конкретном случае. Чтобы очистить, я добавил фотографии.

Q

И не боится иностранных inscriptiones, его не имеет значения. enter image description here

Я просто не знаю, как это исправить, и я думаю, что это связано с StackPanel. Есть идеи ?

UPD: Все коды xaml здесь http://snipt.org/Btff4/Default#expand UPD: Возможно ли поставить еще одну панель стоек на существующую?

ответ

9

Вы, вероятно, ищет атрибут Ориентация:

<StackPanel MinWidth="200" HorizontalAlignment="Left" Width="474" Height="459" Orientation="Horizontal"> 

Update

Добавление очень простой пример, чтобы проиллюстрировать, как StackPanel работы: результат

<Window x:Class="WpfTestBench.Stackpanel" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" SizeToContent="WidthAndHeight"> 
    <StackPanel Orientation="Horizontal" Margin="10"> 
     <TextBox Text="First textbox" Height="20" Margin="5, 0" /> 
     <TextBox Text="Second textbox" Height="20" /> 
    </StackPanel> 
</Window> 

Execution:

Textboxes

Обновление

Добавление XAML, который позволяет достичь желаемого макета: результат

<Window x:Class="WpfTestBench.Stackpanel" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Sample layout" SizeToContent="Height" Width="400"> 
    <Grid Margin="10"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="50" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 

     <Label Grid.ColumnSpan="3" Grid.Row="0" Content="Задайте параметры заявок" FontWeight="Bold" FontSize="16" /> 

     <Grid Grid.Column="0" Grid.Row="1"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="10" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
      </Grid.RowDefinitions> 

      <TextBlock Grid.Row="0" Text="номер заявки" /> 
      <TextBox Grid.Row="1" Text="Введите число" /> 

      <TextBlock Grid.Row="3" Text="приоритет заявки" /> 
      <ComboBox Grid.Row="4" SelectedIndex="0"> 
       <ComboBoxItem Content="Высокий" /> 
       <ComboBoxItem Content="Средний" /> 
       <ComboBoxItem Content="Низкий" /> 
      </ComboBox> 
     </Grid> 

     <Grid Grid.Column="2" Grid.Row="1"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="10" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
      </Grid.RowDefinitions> 

      <TextBlock Grid.Row="0" Text="идентификатор вида работы" /> 
      <TextBox Grid.Row="1" Text="Введите число" /> 
      <TextBlock Grid.Row="3" Text="номер траектории" /> 
      <TextBox Grid.Row="4" Text="Введите число" /> 
     </Grid> 
    </Grid> 
</Window> 

Исполнение:

Desired layout

+0

Может быть, он должен работать, но потом я добавил такое свойство, мои все объекты исчезли. После того, как я вернулся к вертикали и, в конце концов, вернулся к предыдущему состоянию/ – Rocketq

+0

Может быть, проще всего просто не использовать этот 'StackPanel'? – Rocketq

+1

Не могли бы вы опубликовать более четкую версию вашего XAML? В настоящее время он в таком беспорядке, я не могу понять, как все работает вообще. – Somedust

4

Вы можете использовать StackPanel с Orientation="Horizontal", как контейнер. Что-то вроде:

<StackPanel Orientation="Horizontal"> 
    <StackPanel> 
     <TextBlock>Label</TextBlock> 
     <TextBox Width="150"/> 
    </StackPanel> 
    <StackPanel> 
     <TextBlock>Label 2</TextBlock> 
     <TextBox Width="150"/> 
    </StackPanel> 
</StackPanel> 
1

Я предпочитаю разборку сетки, чем StakPanel. Вы можете легко спроектировать свое приложение с помощью этого метода, просто порезав каждую область во многих небольших областях. Используйте Auto и *, чтобы определить пропорцию.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid Grid.Row="0"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Label Content="Label" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" /> 
     <Label Content="Label" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" /> 
     <TextBox Text="Text here !" Grid.Row="1" Grid.Column="0" /> 
     <TextBox Text="Text here !" Grid.Row="1" Grid.Column="1" /> 
    </Grid> 
    <Grid Grid.Row="1"> 
     <Label Content="I need this kind of location" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
</Grid> 
1

Сетка должна делать то, что вам нужно:

<Window x:Class="WpfApplication1.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"> 
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="40"></RowDefinition> 
     <RowDefinition Height="40"></RowDefinition> 
    </Grid.RowDefinitions> 
    <TextBlock Name="lblTextBlock1" Text="Text Block" VerticalAlignment="Center" HorizontalAlignment="Center" /> 
    <TextBox Text="TextBlock1" Grid.Row="1" Margin="5,0,0,0" MaxHeight="20" MinWidth="100" MaxLength="4" MaxWidth="40"></TextBox> 

    <TextBlock Grid.Column="1" Name="lblTextBlock2" Text="Text Block" VerticalAlignment="Center" HorizontalAlignment="Center" /> 
    <TextBox Grid.Column="1" Text="TextBlock2" Grid.Row="1" Margin="5,0,0,0" MaxHeight="20" MinWidth="100" MaxLength="4" MaxWidth="40"></TextBox> 
</Grid> 

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