gpt4 book ai didi

c# - Xaml.Controls.TextBox 中字符的文本换行

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:19 26 4
gpt4 key购买 nike

环境

我正在开发一个 Windows 应用商店应用程序,我创建了一个带有自动换行的文本框

<ScrollViewer x:Name="ScrollView"  Margin="0" Grid.Row="1" Background="Black" BorderThickness="2" BorderBrush="White" KeyDown="keyDown" VerticalScrollBarVisibility="Auto" HorizontalScrollMode="Disabled" ZoomMode="Disabled" IsHorizontalRailEnabled="False" IsHorizontalScrollChainingEnabled="False">
<Grid x:Name="Canvas" SizeChanged="setConsoleWidth">
<TextBox x:Name="textbox" Text="TextBox" Foreground="White" FontSize="24" FontFamily="Assets/inconsolata.ttf#inconsolata" AcceptsReturn="True" BorderThickness="0" Background="{x:Null}" SelectionChanged="handleCaret" Margin="0" IsTextPredictionEnabled="False" TextWrapping="Wrap"/>
<Rectangle x:Name="Caret" Stroke="Black" Fill="White" StrokeThickness="0" Margin="571,260,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="0" Height="0"/>
</Grid>
</ScrollViewer>

想法是您可以在“文本框”中垂直滚动但不能水平滚动。

问题

我希望文本框将边界外的所有字符换行。不必完全保留单词。当一个字符在边界之外时,该字符应该出现在一个新行上。此外,前一个字符应该留在上一行。这应该对包括空格在内的所有字符完成。

当前行为

当前行为可以用下图解释:

Example behavior图 1:示例行为

当插入符号位于我们行的最后一个字符时(图 1.1),当您输入一个字符时可能会发生两种情况,具体取决于字符类型:

  • 字符类型: 非空格(包括制表符) 所有字符

    当前行为您要附加字符的单词只是换行。见图1.2。

    期望的行为只有字符被换行,在图 1.2 的情况下,字符 'd'只会在第二行。

  • 字符类型:空格

    当前行为空格和索引没有换行,只是在当前行继续(见图 1.3)。插入另一个空格不会使该空格换行(见图 1.4,插入符在屏幕外)。下一个非空格字符换行,但空格字符将留在第一行。

    期望的行为空格被换行,在图 1.2 的情况下,字符 'd'只会在第二行。

<罢工>

<罢工> 如何实现这种期望的行为(该页面由 c# 支持)?

编辑:

通过将所有空格替换为不间断空格 ("\u00A0"),我能够将字符空格行为更改为非空格行为。现在我只需要第一部分的解决方案。

最佳答案

按照您的想法,您可以在每个字符后插入一个零宽度空格。它是 unicode 符号 200B ( http://en.wikipedia.org/wiki/Zero-width_space )。我刚刚尝试使用 Windows 窗体,它可以正常工作。

关于c# - Xaml.Controls.TextBox 中字符的文本换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171215/

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