Wpf 文本框上的最小行和最大行不工作

Wpf 文本框上的最小行和最大行不工作,wpf,xaml,textbox,Wpf,Xaml,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

有人能解释为什么下面的文本框最初不显示为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>

...

是的,我也遇到过这个问题。文本框在启动时最初的大小将不正确,您可以通过将Text属性与启动文本绑定(例如balnk空格值“”)来解决此问题

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>

您还可以对文本使用回退值:

<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>

由于将Height属性与MaxLines结合使用,我遇到了相同的问题

如果在文本框上显式设置了Height属性,则将忽略MaxLines和MinLines属性值 -


这个问题是通过使用高度来解决的,因此在给定的高度中只能键入5行

当我在XamlPadX中粘贴代码时,文本框中也会显示3行,您的问题在别处。发布更多包含xaml的内容?我遇到了同样的问题(不工作),显然这是Windows 8/10运行时的一个错误,因为在Windows 7/XP中它没有这种行为。顺便说一句,它在.NET4.6.1中还没有被修复。你知道为什么会发生这种情况吗?我们不需要这样做。我真的不想把空格放进去然后把它们删掉。我不确定原因,我想这是TextBox Maxline属性的一个缺陷。你不应该使用任何
高度
变体,因为它们不考虑字体大小,等等。你真的应该让控件来处理大小,因为它会考虑字体。看看我刚刚发布的答案,它正是这样做的。设置需要做一些事情,但每个代码库只需做一次。设置回退值也并不总是有效。例如,长度为零的字符串不会触发所需的布局,而使用任何其他方法都意味着在绑定根据数据上下文初始化之前,该值将传播到UI。看看我刚刚发布的解决这些问题的答案。
<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>