任何人都可以解释为什么以下TextBox最初不会显示为3行高吗?它显示1行高,然后在我开始键入文本时调整为3。
编辑:这里有一些表格
<Window x:Class="MyNamespace.Views.DetailsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:MV="clr-namespace:MyNamespace.Views"
xmlns:prop="clr-namespace:MyNamespace.Properties"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
MV:DialogCloser.DialogResult="{Binding Path=DialogResult, Mode=TwoWay}"
Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}"
Title="{Binding Source={x:Static prop:Resources.MyView_Caption}}"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterScreen"
WindowStyle="SingleBorderWindow"
MinHeight="100"
MinWidth="250">
<StackPanel Name="AllItems" Orientation="Horizontal">
<StackPanel Width="450" Margin="5">
<StackPanel Margin="5,0,5,0" VerticalAlignment="Center">
<DockPanel Margin="5" >
<Label Content="Prompt"/>
<TextBox MaxLines="3"
MinLines="3"
VerticalScrollBarVisibility="Auto"
TextWrapping="Wrap" />
</DockPanel>
</StackPanel>
</StackPanel>
</StackPanel>
...
</Window>
答案 0 :(得分:2)
是的,我也遇到过这个问题。 TextBox最初在启动时不会正确调整大小,您可以通过将Text属性与启动文本绑定来解决此问题(假设一个balnk空间值&#34;&#34;)。
XAML:
<StackPanel Margin="5,0,5,0" VerticalAlignment="Center">
<DockPanel Margin="5" >
<Label Content="Prompt"/>
<TextBox MaxLines="3"
MinLines="3" x:Name="text"
VerticalScrollBarVisibility="Auto"
Text="{Binding StartUpText}"
AcceptsReturn="True"
TextWrapping="Wrap" TextChanged="text_TextChanged" Loaded="text_Loaded" />
</DockPanel>
</StackPanel>
C#:
public MainWindow()
{
InitializeComponent();
this.DataContext=this;
StartUpText = " ";
}
private string startUpText;
public string StartUpText
{
get { return startUpText; }
set
{
if (value != startUpText)
{
startUpText = value;
}
}
}
答案 1 :(得分:0)
你也可以在Text:
上使用FallbackValue<StackPanel Margin="5,0,5,0" VerticalAlignment="Center">
<DockPanel Margin="5" >
<Label Content="Prompt"/>
<TextBox MaxLines="3"
MinLines="3" x:Name="text"
VerticalScrollBarVisibility="Auto"
Text="{Binding StartUpText, FallbackValue=whatyouwant}"
AcceptsReturn="True"
TextWrapping="Wrap" TextChanged="text_TextChanged" Loaded="text_Loaded" />
</DockPanel>
</StackPanel>
答案 2 :(得分:0)
由于将Height属性与MaxLines结合使用,我遇到了同样的问题。
“如果在TextBox上显式设置了Height属性,则将忽略MaxLines和MinLines属性值。” -https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.textbox.maxlines?view=netframework-4.8
此问题通过使用高度来解决,因此在给定的高度中只能键入5行