如何使文本框展开以填充网格单元格的剩余空间?

时间:2014-08-12 15:58:26

标签: wpf xaml

我有以下窗口,其中包含一些输入textboxes。但是这些文本框不会扩展以填充第二列的剩余空间。此外,当窗口调整大小时,textboxes不会调整大小

这是我的窗口

enter image description here

这是我的XAML标记

<Window x:Class="WpfApplication8.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 ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="28"></RowDefinition>
        </Grid.RowDefinitions>

        <Label Content="First Name" Grid.Column="0" Grid.Row="0"></Label>
        <Label Content="Last Name" Grid.Column="0" Grid.Row="1"></Label>
        <Label Content="Street Name" Grid.Column="0" Grid.Row="2"></Label>
        <Label Content="Suburb" Grid.Column="0" Grid.Row="3"></Label>
        <Label Content="City" Grid.Column="0" Grid.Row="4"></Label>

        <TextBox Width="313" Grid.Column="1" Margin="3" HorizontalAlignment="Left"/>
        <TextBox Width="313" Grid.Column="1" Grid.Row="1" Margin="3" 
                 HorizontalAlignment="Left" ></TextBox>
        <TextBox Width="313" Grid.Column="1" Grid.Row="2" Margin="3" 
                 HorizontalAlignment="Left"></TextBox>
        <TextBox Width="313" Grid.Column="1" Grid.Row="3" Margin="3" 
                 HorizontalAlignment="Left"></TextBox>
        <TextBox Width="313" Grid.Column="1" Grid.Row="4" Margin="3"
                 HorizontalAlignment="Left"></TextBox>

        <StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="5" 
                    HorizontalAlignment="Right">
        <Button Content="Save" Grid.Column="1" Grid.Row="5" Width="100" Margin="3" />
        <Button Content="Exit" Grid.Column="1" Grid.Row="5" Width="100" 
                 HorizontalAlignment="Right" Margin="3"></Button>
        </StackPanel>
        <!--<TextBox Width="313" Grid.Column="1"></TextBox>-->
    </Grid>
</Window>
  1. 是否可以扩展textboxes以填充第二列中的剩余空间?
  2. 是否可以使用resize格式调整textboxes的大小?

3 个答案:

答案 0 :(得分:31)

你有宽度硬编码,所以它总是保持不变。删除它,并将对齐更改为拉伸

<TextBox Grid.Column="1" Margin="3" HorizontalAlignment="Stretch">

答案 1 :(得分:0)

只需将Horizo​​ntalAlignment =&#34; Stretch&#34;并删除宽度

答案 2 :(得分:0)

如果有人遇到相同的问题,请注意:

对我来说,问题是我在我的2列中都使用了网格上的SharedSizeGroup。 如果我删除了*列上的sharedsizegroup =“ b”,问题就解决了。

<StackPanel Orientation="Vertical"
            Grid.IsSharedSizeScope="True">
                        <Grid Margin="0 10">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="a" />
                                <ColumnDefinition Width="*"  **SharedSizeGroup="b"**/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="Size (m): " />
                            <TextBox x:Name="RealObjSize"
                                     Grid.Column="1"
                                     MinWidth="50"
                                     HorizontalAlignment="Stretch"
                                     TextChanged="RealObjSize_OnTextChanged" />
                        </Grid>

                        <Grid Margin="0 10">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" SharedSizeGroup="a" />
                                <ColumnDefinition Width="*" **SharedSizeGroup="b"**/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="Distance (m): " />
                            <TextBox x:Name="RealObjDist"
                                 Grid.Column="1"
                                 MinWidth="50"
                                 HorizontalAlignment="Stretch"
                                 TextChanged="RealObjDist_OnTextChanged" />
                        </Grid>
                    </StackPanel>