如何使文本框扩展以填充网格单元的剩余空间?
Posted
技术标签:
【中文标题】如何使文本框扩展以填充网格单元的剩余空间?【英文标题】: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>
-
是否可以扩展
textboxes
以填充第二列中的剩余空间?
是否可以通过表单调整大小来调整textboxes
的大小?
【问题讨论】:
【参考方案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】:只需放置 HorizontalAlignment="Stretch" 并删除 Width
【讨论】:
以上是关于如何使文本框扩展以填充网格单元的剩余空间?的主要内容,如果未能解决你的问题,请参考以下文章
网页上的自动填充文本框 (Javascript/VBScript)
居中时如何“自动扩展”CSS网格单元以填充可用空间? [复制]