UWP TextBox文本方向问题

时间:2016-04-04 15:29:22

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

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

只有当我使用这段代码打开文件时才会发生这种情况(只有当我将enconding设置为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);

以下是一些截图:

With the first piece of code (UTF8)

With the second piece of code (Or with ANSI)

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

编辑:这是文本框的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"/>

1 个答案:

答案 0 :(得分:0)

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

而不是使用

FlowDirection="LeftToRight"

我用过:

TextAlignment="Left"

现在,只要感到满意,它就会停止将文本对齐。

编辑:

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

具有讽刺意味的是,微软是唯一一个制作他们程序的开发者/公司(例如Notepad,Visual Studio),他们在他们保存的UTF-8文件中添加了一个BOM,在他们的“明星”平台中加入了一个错误的文本框(UWP)使用UTF-8 BOM无法正常工作。