C# 在拉伸选项卡控件中居中文本框

C# 在拉伸选项卡控件中居中文本框,c#,wpf,xaml,textbox,tabcontrol,C#,Wpf,Xaml,Textbox,Tabcontrol,我正在WPF中制作一个多选项卡应用程序,我想在选项卡的网格中水平居中制作一个文本框。选项卡控件当前被拉伸以适应窗口大小,因此如果窗口被调整大小/最大化,应用程序也将更改大小。如果我按下设计器中的“水平居中”按钮,它会将文本框向右移动。我做错了什么 以下是迄今为止该应用程序的XAML代码: <Window x:Class="GUI_Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pres

我正在WPF中制作一个多选项卡应用程序,我想在选项卡的网格中水平居中制作一个文本框。选项卡控件当前被拉伸以适应窗口大小,因此如果窗口被调整大小/最大化,应用程序也将更改大小。如果我按下设计器中的“水平居中”按钮,它会将文本框向右移动。我做错了什么

以下是迄今为止该应用程序的XAML代码:

<Window x:Class="GUI_Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GUI_Test"
        mc:Ignorable="d"
        Title="MainWindow" Height="524" Width="996.432">
    <Grid>
        <TabControl x:Name="tabControl" HorizontalContentAlignment="Center">
            <TabItem x:Name="Home" Header="Home" Width="150">
                <Grid Background="#FFE5E5E5"/>
            </TabItem>
            <TabItem x:Name="Dictionary" Header="Dictionary" Width="150">
                <Grid Background="#FFE5E5E5"/>
            </TabItem>
            <TabItem x:Name="Search" Header="Search" Height="20" Width="150">
                <Grid Background="#FFE5E5E5">
                    <TextBox x:Name="textBox" HorizontalAlignment="Center" Height="23" Margin="524,105,204,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="250"/>
                </Grid>
            </TabItem>
            <TabItem x:Name="About" Header="About" Height="20" Width="150">
                <Grid Background="#FFE5E5E5"/>
            </TabItem>
        </TabControl>
    </Grid>
</Window>

我现在专注于“搜索”选项卡。当窗口展开时,文本框(以及任何其他元素)也需要移动,所以我不能只计算中点和设置尺寸。我会做一些类似于
MarginLeft=MainWindow.getWidth/2
或类似的事情,但是既没有
MarginLeft
也没有具有任何可编辑属性的
MainWindow

我还试着在选项卡中使网格具有不同的布局,但它不允许我这样做。

如果我答对了,您想水平集中
网格上的
文本框
,您只需将
水平对齐
设置为
居中
,并删除左右两侧的
边距
(第一和第三个数字),如下所示:

<TextBox x:Name="textBox" HorizontalAlignment="Center" Height="23" Margin="0,105,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="250"/>

强调
Margin=“0105,0,0”
,这与您的代码不同


如果您还想将其垂直居中,只需将
垂直对齐设置为
居中
,并完全删除
边距
(或将其设置为零).

如果我答对了,您想水平集中
网格上的
文本框
,只需将
水平对齐
设置为
中心
,并删除左右两侧(第一个和第三个数字)的
边距
,如下所示:

<TextBox x:Name="textBox" HorizontalAlignment="Center" Height="23" Margin="0,105,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="250"/>

强调
Margin=“0105,0,0”
,这与您的代码不同


如果您想垂直集中,只需将
垂直对齐设置为
中心
,并完全删除
边距(或将其设置为零)。

请向我们展示一些代码。谢谢。它已编辑。对不起,我对堆栈溢出规则还不是很熟练:)删除文本框中的空白。请给我们看一些代码。再见,谢谢。它已被编辑。对不起,我对StackOverflow的规则还不是很熟练:)从文本框中删除边距。这很有效,谢谢。我知道问题在哪里出现,利益冲突。谢谢。我看到了问题所在,利益冲突。