阻止 WPF 文本框自动扩展

3
我花了两个小时研究如何避免WPF TextBox控件在输入长文本时变大,但我没有成功,即使我读了一些关于此类问题的答案,例如下面这些:

stopping-wpf-textbox-from-growing-with-text

wpf-allow-textbox-to-be-resized-but-not-to-grow-on-user-input

wpf-how-to-stop-textbox-from-autosizing

我的代码如下:

<Grid>
      <TextBox Margin="6,6,8,28" Name="textBox1" AcceptsTab="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible" AcceptsReturn="True"/>
      <CheckBox Content="Case sensitive" HorizontalAlignment="Left" Margin="7,0,0,2" Name="checkBox1" Height="16" VerticalAlignment="Bottom" />
</Grid>

我尝试过的一件事是:

MaxWidth={Binding ElementName=MyGrid, Path=ActualWidth} 

但是它对于我没有起作用。
我还尝试向网格添加以下属性:
ScrollViewer.HorizontalScrollBarVisibility="Disabled"

或者

<Border x:Name="b" Grid.Column="1"/>
<TextBox Width="{Binding ActualWidth, ElementName=b}" ....... />

但是这也行不通。
当用户拉伸窗口时,我需要控件增长,但插入长文本时不需要增长。
你有什么不同的解决方法来解决这个问题吗?
更新!
我注意到一些非常奇怪的事情:如果我手动拉伸窗口,当插入长文本时文本框停止增长。这很好。但是我需要在运行程序时不必每次都拉伸窗口才能实现此目的。

找到解决方案了吗? - denver
2个回答

0

移除文本框边框并将其放入滚动视图中。


谢谢您的回复,但我已经尝试了您的解决方案,它也不起作用,无论如何还是谢谢。 - Dante
在TextChanged事件中手动更改TextBox大小为在resize事件上记住的值(我不确定您所说的“当用户拉伸它”是什么意思)。 - zduny
你也可以通过定义一些网格行和列来强制设置TextBox的大小。 - zduny
抱歉,我的意思是“当用户拉伸包含文本框的窗口时”。 - Dante

0

尝试做下一步:

<ScrollViewer MaxHeight={Binding ElementName=MyGrid, Path=ActualWidth} BorderThickness="0">                    
      <TextBox Margin="6,6,8,28" Name="textBox1" AcceptsTab="True" TextWrapping="Wrap" AcceptsReturn="True"/>          
</ScrollViewer>

谢谢您的回复。我刚试了一下,但还是不行,它仍然表现得一样:我必须拉伸窗口才能阻止我的文本框继续增长。 - Dante

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接