3

我花了两个小时研究如何避免在输入长文本时我的 WPF TextBox 控件增长,但我无法做到这一点,即使我已经阅读了一些关于它的答案,比如这些答案:

停止-wpf-textbox-from-growth-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}" ....... />

但它也没有奏效。

当用户拉伸窗口时,我需要我的控件来增长,而不是在插入长文本时。

对于这个问题,您有不同的答案吗?我可以尝试一下吗?

更新!

我注意到一些非常奇怪的事情:如果我手动拉伸窗口,当插入长文本时文本框会停止增长。没关系。但是我需要在每次运行程序时都不必拉伸窗口来实现这一点

4

2 回答 2

0

移除 TextBox 边框并将其放入 ScrollViewer。

于 2012-05-16T22:28:27.293 回答
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>
于 2012-05-17T14:18:57.433 回答