我正在尝试将 TextBox 控件放置在一个相当大的面板中(使用 GridSplitter)。
我遇到的第一个问题是,当输入的文本变长时,TextBox 会自动调整大小。我在这个站点上找到了一个解决方案,它用边框包装 TextBox,然后将 TextBox 的宽度设置为边框的宽度(如下面的 XAML 所示)。这似乎工作。我提到这一点,以防它是我正在寻求帮助的问题的原因。
当前的问题是 TextBox 调整大小,但 ScrollViewer 在面板调整大小时立即启动。我想看到的是当 TextBox 缩小到最小宽度(而不是之前)时,ScrollViewer 会启动。
我目前使用的完整 XAML 如下所示。
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="NonExpandingTextBoxDemo.MainWindow" Height="350" Title="MainWindow" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ScrollViewer Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" HorizontalScrollBarVisibility="Auto" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto">
<Border HorizontalAlignment="Stretch" Margin="20, 20, 20, 20" MinWidth="100" VerticalAlignment="Center">
<TextBox Width="{Binding Mode=OneWay, Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Border}, Mode=FindAncestor}}" />
</Border>
</ScrollViewer>
<GridSplitter Grid.Column="1" Grid.Row="0" ResizeBehavior="PreviousAndNext" VerticalAlignment="Stretch" Width="3" />
<TextBlock Grid.Column="2" Grid.Row="0" HorizontalAlignment="Center" Text="Right Panel" VerticalAlignment="Center" />
</Grid>
</Window>
问题是我错过了什么?我尝试了几件事,但似乎没有任何效果。
预先感谢您对此问题的任何指导。