【问题标题】:UWP TextBox Text Orientation ProblemsUWP TextBox 文本方向问题
【发布时间】:2016-04-04 15:29:22
【问题描述】:

我正在编写一个 Windows 10 UWP 应用程序,我在其中打开纯文本文件并在文本框中显示所述文件的内容。但是我在显示一些文件时遇到了一些奇怪的问题。打开一些文件后,文本框的方向从通常的“从左到右”转变为“从右到左”,即使在 XAML 代码中它被指定为“从左到右”。

这仅在我使用这段代码打开文件时发生(仅当我将编码设置为 UTF8,如果我将其设置为 ANSI,文本框将以适当的方向显示文本,但我正在尝试的文件打开不在ANSI):

IBuffer buffer = await FileIO.ReadBufferAsync(file);
            DataReader reader = DataReader.FromBuffer(buffer);
            byte[] fileContent = new byte[reader.UnconsumedBufferLength];
            reader.ReadBytes(fileContent);
            string fileText = Encoding.UTF8.GetString(fileContent, 0, fileContent.Length);

如果我使用其他代码,它会正确显示,但在打开其他一些文本文件时会崩溃:

string fileText = await FileIO.ReadTextAsync(file);

以下是一些截图:

我对此感到非常困惑,非常感谢任何帮助。

编辑:这是文本框的 XAML 代码:

<TextBox x:Name="MainTextBox"
             TextWrapping="Wrap"
             AcceptsReturn="True"
             Grid.Row="2"
             ScrollViewer.VerticalScrollBarVisibility="Auto"
             ScrollViewer.HorizontalScrollBarVisibility="Auto"
             FlowDirection="LeftToRight"
             TextChanged="MainTextBox_TextChanged"
             PointerEntered="MainTextBox_PointerEntered"
             PointerExited="MainTextBox_PointerExited"/>

【问题讨论】:

  • 请贴出xaml代码
  • 无法使用上述代码重现您的问题。你的意思是有些文件可以正确显示,但有些不能吗?如果是这样,多半是文件的问题。上传>“部分文件”。
  • 我已将文本框的 XAML 代码添加到我的问题中。
  • 我也刚刚注意到,这只发生在带有 BOM 的 UTF-8 文本文件中。

标签: c# xaml file-io textbox win-universal-app


【解决方案1】:

我找到了解决方法,并意识到我没有在我的文本框 XAML 代码中使用正确的属性。

而不是使用

FlowDirection="LeftToRight"

我用过:

TextAlignment="Left"

现在它会停止将文本向右对齐。

编辑:

实际上上面并没有解决所有问题,所以我不得不从我想要加载的文件中删除 BOM(UTF-8 文件的前三个字节),因为出于某种原因,这就是使文本在文本框中显示为还原。

具有讽刺意味的是,微软是仅有的开发者/公司之一,他们制作他们的程序(例如记事本、Visual Studio)在他们保存的 UTF-8 文件中添加一个 BOM,在他们的“明星”平台中包含一个错误的文本框(UWP) 不适用于 UTF-8 BOM。

【讨论】:

    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2017-07-22
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多