gpt4 book ai didi

wpf - 文本框与周围的网格一起扩展但不与文本一起扩展

转载 作者:行者123 更新时间:2023-12-04 01:53:11 27 4
gpt4 key购买 nike

一个窗口有一个包含两列的网格。左列包含一个宽度恒定但高度自适应的控件。右列包含一个 TextBox,它占据了 Grid 中的所有剩余空间(从而占据了 Window 中的所有剩余空间)。

Grid 被赋予最小的宽度和高度,并被包裹在一个 ScrollViewer 中。如果用户将窗口大小调整为小于 Grid 的最小宽度/高度,则会显示滚动条。

这正是我想要的。但是,当用户开始键入文本时会出现问题。如果文本太长而无法在 TextBox 中的一行中显示,我希望文本换行。因此我设置了TextWrapping="Wrap"在文本框上。但是由于 TextBox 有一个自动宽度并且被包裹在一个 ScrollViewer 中(它实际上是整个 Grid 被包裹),TextBox 只是不断向右扩展。

如果窗口展开,我确实希望 TextBox 展开,但我不希望 TextBox 由文本展开。相反,文本应该包裹在可用的 TextBox 内。如果文本不适合 TextBox 高度,则应在 TextBox 内显示滚动条。

有没有办法做到这一点?

下面是一些显示我的问题的代码:

<Window x:Class="AdaptingTextBoxes.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="400" Background="DarkCyan">
<Grid Margin="10" Name="LayoutRoot">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Grid MinWidth="300" MinHeight="200">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<Button Grid.Column="0" Margin="0,0,10,0" Content="Button" Width="100" />

<TextBox Grid.Column="1" AcceptsReturn="True" TextWrapping="Wrap" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" />
</Grid>
</ScrollViewer>
</Grid>
</Window>

最佳答案

你可以使用一个不可见的边框(它很笨,但它有效 - 我倾向于在 Xaml 中整理动态文本框大小):

<Border BorderThickness="0" x:Name="border" Grid.Column="1" Margin="0.5" />
<TextBox Grid.Column="1" AcceptsReturn="True" TextWrapping="Wrap" Width="{Binding ActualWidth, ElementName=border}" Height="{Binding ActualHeight, ElementName=border}" />

关于wpf - 文本框与周围的网格一起扩展但不与文本一起扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591456/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com