我遇到过这种情况:我有几个 Entry 控件,这些控件上的文本经常超出输入控件的显示范围。我试图保持文本左对齐,因此我使用 HorizontalTextAlighnment="Start",当 IsReadOnly="False" 时它将正确显示,但如果我将 Entry 设置为 IsReadOnly="True",则输入字段中的文本将右对齐。
这是一个演示该问题的简单 xaml 页面:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiBugExample.MainPage">
<ScrollView>
<VerticalStackLayout x:Name="PageVerticalStackLayout"
Padding="30,0"
Spacing="25">
<Label Text="HorizontalTextAlignment=Start IsReadonly=False" />
<Entry
HorizontalTextAlignment="Start"
HorizontalOptions="FillAndExpand"
Text="abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
IsReadOnly="False"/>
<Label Text="HorizontalTextAlignment=Start IsReadonly=True" />
<Entry
HorizontalTextAlignment="Start"
HorizontalOptions="FillAndExpand"
Text="abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
IsReadOnly="True"/>
</VerticalStackLayout>
</ScrollView>
输出结果如下。第一行非只读,但正确左对齐;第二行只读,但应左对齐,但右对齐:
仅当文本超出控件大小时才会出现问题。如果我在输入字段中输入的文本较少,即使 ReadOnly=True,它也会保持左对齐
您可以添加自定义映射,以便在只读
EntryHandler
时将光标位置设置为开始。Entry
在应用程序启动期间添加此项,例如在 中
MauiProgram.cs
。