Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将两个不同的文本框放入同一级别?_C#_Wpf_Visual Studio_Visual Studio 2013 - Fatal编程技术网

C# 如何将两个不同的文本框放入同一级别?

C# 如何将两个不同的文本框放入同一级别?,c#,wpf,visual-studio,visual-studio-2013,C#,Wpf,Visual Studio,Visual Studio 2013,右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

右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"/>
正如你们所能看到的,有两个文本框,一个位于另一个之下,我需要把它们放在同一个级别,我试着通过构造函数来实现,但在我的特殊情况下,它就是不这样做。为了清晰起见,我添加了一些图片

不要害怕外国的铭文,这没关系。

我只是不知道如何解决这个问题,我认为这与StackPanel有关。有什么想法吗

UPD:这里的所有xaml代码
UPD:是否可以在现有的堆栈面板上再放置一个堆栈面板rigt?

您可能正在查找方向属性:

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

添加一个非常基本的示例来说明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>
执行结果:

更新

添加允许实现所需布局的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>
执行结果:


您可能正在查找方向属性:

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

添加一个非常基本的示例来说明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>
执行结果:

更新

添加允许实现所需布局的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>
执行结果:

可以将方向为水平的StackPanel用作容器。比如:

<StackPanel Orientation="Horizontal">
    <StackPanel>
        <TextBlock>Label</TextBlock>
        <TextBox Width="150"/>
    </StackPanel>
    <StackPanel>
        <TextBlock>Label 2</TextBlock>
        <TextBox Width="150"/>
    </StackPanel>
</StackPanel>
可以将方向为水平的StackPanel用作容器。比如:

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

我更喜欢网格定义而不是StakPanel。您可以使用这种方法轻松地设计应用程序,只需将每个区域切割成许多更小的区域。使用“自动”和*定义比例

<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>

我更喜欢网格定义而不是StakPanel。您可以使用这种方法轻松地设计应用程序,只需将每个区域切割成许多更小的区域。使用“自动”和*定义比例

<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>

网格应满足您的需要:

<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>

网格应满足您的需要:

<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>

也许它应该是有效的,但后来我添加了这样的属性,我的所有对象都消失了。在我回到垂直,并最终回到以前的状态后/你能发布一个更清晰的XAML版本吗?目前它处于如此混乱的状态,我根本无法理解一切是如何工作的。同时,你可以下载并使用一个可视化/逻辑树浏览器,比如WPF Inspector。你看不到某些对象并不意味着它们不存在。好吧,我终于下载了你的代码,它与你最初问题中发布的代码毫无共同之处。请注意,它不是WinForms,因此仅使用designer不是一个选项。使用边距定位所有元素将使您一事无成。我查看了您发布的代码的最后一部分。您的所有元素都在一个文本块中,因此几乎不可能更改布局。我强烈怀疑是否应该采取这种做法。请参阅我的更新答案,了解如何实现目标的一个非常简单的示例。请注意,这只是可能的解决方案之一。可能它应该有效,但后来我添加了这样的属性,我的所有对象都消失了。在我回到垂直,并最终回到以前的状态后/你能发布一个更清晰的XAML版本吗?目前它处于如此混乱的状态,我根本无法理解一切是如何工作的。同时,你可以下载并使用一个可视化/逻辑树浏览器,比如WPF Inspector。你看不到某些对象并不意味着它们不存在。好吧,我终于下载了你的代码,它与你最初问题中发布的代码毫无共同之处。请注意,它不是WinForms,因此仅使用designer不是一个选项。使用边距定位所有元素将使您一事无成。我查看了您发布的代码的最后一部分。您的所有元素都在一个文本块中,因此几乎不可能更改布局。我强烈怀疑是否应该采取这种做法。请参阅我的更新答案,了解如何实现目标的一个非常简单的示例。请注意,这只是可能的解决方案之一。