UWP TextBox 文本方向问题
UWP TextBox Text Orientation Problems
我正在编写一个 Windows 10 UWP 应用程序,我在其中打开纯文本文件并在文本框中显示所述文件的内容。但是我在显示一些文件时遇到了一些奇怪的问题。打开某些文件后,文本框的方向从通常的 'left to right' 变为 'right to left',即使在 XAML 代码中指定为 'left to right'.
只有当我使用这段代码打开文件时才会发生这种情况(只有当我将编码设置为 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 代码中使用正确的 属性。
而不是使用
FlowDirection="LeftToRight"
我用过:
TextAlignment="Left"
而且它现在停止随时将文本右对齐。
编辑:
其实上面并没有解决所有的问题,所以我不得不从我想加载的文件中删除BOM(UTF-8文件的前三个字节),因为某些原因是什么导致文本在文本框中出现还原。
具有讽刺意味的是,微软是唯一的 devs/companies 使他们的程序(例如记事本,Visual Studio)在他们保存的 UTF-8 文件中添加 BOM,包括一个错误他们的 "star" 平台 (UWP) 中的文本框不适用于 UTF-8 BOM。
我正在编写一个 Windows 10 UWP 应用程序,我在其中打开纯文本文件并在文本框中显示所述文件的内容。但是我在显示一些文件时遇到了一些奇怪的问题。打开某些文件后,文本框的方向从通常的 'left to right' 变为 'right to left',即使在 XAML 代码中指定为 'left to right'.
只有当我使用这段代码打开文件时才会发生这种情况(只有当我将编码设置为 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 代码中使用正确的 属性。
而不是使用
FlowDirection="LeftToRight"
我用过:
TextAlignment="Left"
而且它现在停止随时将文本右对齐。
编辑:
其实上面并没有解决所有的问题,所以我不得不从我想加载的文件中删除BOM(UTF-8文件的前三个字节),因为某些原因是什么导致文本在文本框中出现还原。
具有讽刺意味的是,微软是唯一的 devs/companies 使他们的程序(例如记事本,Visual Studio)在他们保存的 UTF-8 文件中添加 BOM,包括一个错误他们的 "star" 平台 (UWP) 中的文本框不适用于 UTF-8 BOM。