【问题标题】:How do i make the textboxes expand to fill the remaining space of the Grid Cell?如何使文本框扩展以填充网格单元的剩余空间?
【发布时间】:2014-10-05 19:04:09
【问题描述】:

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

这是我的窗口

这是我的 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. 是否可以通过表单调整大小来调整textboxes 的大小?

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    您对宽度进行了硬编码,因此它始终保持不变。删除它,并将对齐更改为拉伸

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

    【讨论】:

    • 我建议不要删除 Width,而是将其更改为 MinWidth="313"。这样,您可以获得拉伸行为,同时也避免了用户将大小调整为无法使用的情况。
    • @Chris Developer 不对用户的不明智使用负责!
    【解决方案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>
    

    【讨论】:

      【解决方案3】:

      只需放置 Horizo​​ntalAlignment="Stretch" 并删除 Width

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 2013-11-04
        • 2020-08-25
        • 2019-09-03
        • 1970-01-01
        • 2013-07-23
        相关资源
        最近更新 更多