拉伸选项卡控件中的中心文本框

时间:2016-02-11 13:34:31

标签: c# wpf xaml textbox tabcontrol

我正在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或类似事情的事情,但是MarginLeftMainWindow都没有任何可编辑的属性。 我也尝试在选项卡中使网格成为不同的布局,但它不允许我这样做。

1 个答案:

答案 0 :(得分:0)

如果我说得对,你想在TextBox上水平集中Grid,那么您需要将HorizontalAlignment设置为Center并删除{ {1}}左右两侧(第一个和第三个数字),如下所示:

Margin

强调<TextBox x:Name="textBox" HorizontalAlignment="Center" Height="23" Margin="0,105,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="250"/> ,这与您的代码有所不同。

如果您想要垂直集中它,只需将Margin="0,105,0,0"设置为VerticalAlignment并完全删除Center(或将其设置为零)。