WPF TextBox 不切换到新行

问题描述 投票:0回答:1

我有一个

TextBox
,我希望它是多行的并自动调整父级的大小:

<TextBox Grid.Row="0" Grid.Column="0" 
    AcceptsReturn="True"
    HorizontalAlignment="Stretch"
    IsEnabled="{Binding CanModify}"
    Margin="0"
    TextWrapping="Wrap" 
    Text="{Binding Comment, UpdateSourceTrigger=PropertyChanged}"
    VerticalScrollBarVisibility="Auto"
    VerticalAlignment="Stretch"
/>

TextBlock
自动切换到新行的大多数建议都是在其属性中添加
TextWrapping="Wrap" 
,以防止其拉伸,通常是
AcceptsReturn="True"
VerticalScrollBarVisibility="Auto"
或手动设置
width
。正如你所看到的,我唯一还没有尝试过的是宽度,但在我的例子中
TextBox
应该适合容器,其宽度未知(也取决于它的父级)。按照列表中的方式设置属性并没有帮助:插入符号永远不会移动到新行并拉伸
TextBox
和整个窗口。

我该怎么做才能防止

TextBox
拉伸并自动将文本移动到新行?

编辑:容器是一个

TabControl
。包含选项卡:

<TabItem Header="{some binding}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition SharedSizeGroup="TabHeight" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="TabWidth" />
        </Grid.ColumnDefinitions>

        <TextBox Grid.Row="0" Grid.Column="0" 
                 AcceptsReturn="True"
                 HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                 IsEnabled="{Binding CanModify}"
                 Margin="0"
                 Style="{some style}"
                 TextWrapping="Wrap" 
                 Text="{Binding Comment, UpdateSourceTrigger=PropertyChanged}"
                 VerticalScrollBarVisibility="Auto"
                 />
    </Grid>
</TabItem>

这个

TabControl
在于一个简单的
Grid
,没有任何特定风格的约束。唉,我无法分享应用于
TabControl
的完整样式代码,但我非常感谢任何尝试的想法。

您看到的

SharedSizeGroups
旨在将整个
TabControl
拉伸到最宽的选项卡,防止其在选项卡开关上调整大小并仅与另一个选项卡共享(此
TabControl
中有两个选项卡)。

c# wpf
1个回答
0
投票

去掉

UpdateSourceTrigger=PropertyChanged
,多行就可以了。我不知道为什么,但这对我来说就是问题。

© www.soinside.com 2019 - 2024. All rights reserved.