我的目标是一个接受返回的TextBox,但只显示4行文本,这些文本与其他文本行对齐,但我有一些基本上似乎可以归结为问题的问题:什么是将session_start();
的内容垂直拉伸到可用空间的正确方法吗?
最小的例子如下:
TextBox
但输出并非我的预期:
我尝试设置<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="150" d:DesignWidth="150">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="1" />
<Label Grid.Column="0" Grid.Row="1" Content="2" />
<Label Grid.Column="0" Grid.Row="2" Content="3" />
<Label Grid.Column="0" Grid.Row="3" Content="4" />
<TextBox Grid.Column="1" Grid.Row="0" Grid.RowSpan="4" VerticalContentAlignment="Stretch" VerticalAlignment="Stretch" AcceptsReturn="True" MaxLines="4" Text="1 2 3 4" />
</Grid>
</Window>
,但它只是&#34;切断&#34;文字:
LineHeigt
修改
为<TextBox Grid.Column="1" Grid.Row="0" Grid.RowSpan="4" VerticalContentAlignment="Stretch" VerticalAlignment="Stretch" AcceptsReturn="True" MaxLines="4" Text="1 2 3 4" TextBlock.LineStackingStrategy="MaxHeight" TextBlock.LineHeight="18" VerticalScrollBarVisibility="Visible" />
设置固定高度可以纠正行为,但这并不是解决问题的好方法。
答案 0 :(得分:1)
您当前问题的直接原因是因为您使用的是Label
而非TextBlock
这导致的问题是TextBox
将行呈现为TextBlock
,这是一个框架元素。鉴于Label
是一个模板化控件,继承自ContentControl
并且默认设置为Padding
。
因此,如果您希望它们在您的场景中对齐,您可以选择一些选项,例如;
遏制Label
上的填充;
<Label Padding="0"/>
或者将它们换成好的旧TextBlock
(顺便说一下,这是一个“更轻”的控件,而不是实际需要使用Label
)。
或者您可以调整TextBox
来反映Label
的填充,方法是TextBlock
定位附加属性,例如TextBlock.LineHeight
和TextBlock.LineStackingStrategy="BlockLineHeight"
采取一些修改来获得你想要的确切输出。
另请注意 TextBox
也是带有嵌入式ScrollViewer
的模板化控件,因此默认BorderThickness
因此,如果我们做这样的事情,保留原始控制对,你会看到罪魁祸首作为例子;
<Grid ShowGridLines="True"
HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Label Content="1" Padding="0"/>
<Label Grid.Row="1" Content="2" Padding="0"/>
<Label Grid.Row="2" Content="3" Padding="0"/>
<Label Grid.Row="3" Content="4" Padding="0"/>
<TextBox BorderThickness="0"
Grid.Column="1" Grid.RowSpan="4"
VerticalAlignment="Top"
VerticalContentAlignment="Stretch"
AcceptsReturn="True" MaxLines="4"
Text="1 2 3 4" />
</Grid>
给出结果;
答案 1 :(得分:0)
如果文本框位于vboxbox中,则可以将其拉伸,如下所示:
<Viewbox Stretch="Uniform" Grid.Column="1" Grid.Row="0" Grid.RowSpan="4" >
<TextBox Name="textBox" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Text="1 2 3 4"/>
</Viewbox>
但在类似情况下,我想使用DataGrid