Xamarin.Forms Düzenleyici
Denetim Editor
, çok satırlı girişi kabul etmek için kullanılır.
Metin ayarlama ve okuma
Editor
, diğer metin sunum görünümleri gibi özelliğini kullanıma sunarText
. Bu özellik, tarafından Editor
sunulan metni ayarlamak ve okumak için kullanılabilir. Aşağıdaki örnekte XAML'de özelliğin Text
ayarlanması gösterilmektedir:
<Editor x:Name="editor" Text="I am an Editor" />
C# dilinde:
var editor = new Editor { Text = "I am an Editor" };
Metni okumak için C# dilinde özelliğine erişin Text
:
var text = editor.Text;
Yer tutucu metni ayarlama
Editor
, kullanıcı girişini depolamadığında yer tutucu metni gösterecek şekilde ayarlanabilir. Bu, özelliği olarak string
ayarlanarak Placeholder
gerçekleştirilir ve genellikle için uygun içerik türünü belirtmek için Editor
kullanılır. Ayrıca, yer tutucu metin rengi özelliği olarak Color
ayarlanarak PlaceholderColor
denetlenebilir:
<Editor Placeholder="Enter text here" PlaceholderColor="Olive" />
var editor = new Editor { Placeholder = "Enter text here", PlaceholderColor = Color.Olive };
Metin girişini engelle
Varsayılan değeri olan özelliği olarak ayarlanarak IsReadOnly
kullanıcıların bir Editor
içindeki metni değiştirmesi false
true
engellenebilir:
<Editor Text="This is a read-only Editor"
IsReadOnly="true" />
var editor = new Editor { Text = "This is a read-only Editor", IsReadOnly = true });
Not
özelliği, IsReadonly
öğesinin görsel görünümünü Editor
de gri olarak değiştiren özelliğin aksine IsEnabled
bir öğesinin Editor
görsel görünümünü değiştirmez.
Metin dönüştürme
, Editor
özelliğini sabit listesi değerine ayarlayarak TextTransform
özelliğinde Text
depolanan metninin TextTransform
büyük/küçük harflerini dönüştürebilir. Bu sabit listesi dört değere sahiptir:
None
metnin dönüştürülmeyeceğini gösterir.Default
platform için varsayılan davranışın kullanılacağını belirtir. Bu özelliğin varsayılan değeridirTextTransform
.Lowercase
metnin küçük harfe dönüştürüleceğini gösterir.Uppercase
metnin büyük harfe dönüştürüleceğini gösterir.
Aşağıdaki örnekte metni büyük harfe dönüştürme gösterilmektedir:
<Editor Text="This text will be displayed in uppercase."
TextTransform="Uppercase" />
Eşdeğer C# kodu:
Editor editor = new Editor
{
Text = "This text will be displayed in uppercase.",
TextTransform = TextTransform.Uppercase
};
Giriş uzunluğunu sınırla
MaxLength
özelliği, için izin verilen giriş uzunluğunu sınırlamak Editor
için kullanılabilir. Bu özellik pozitif bir tamsayıya ayarlanmalıdır:
<Editor ... MaxLength="10" />
var editor = new Editor { ... MaxLength = 10 };
MaxLength
0 özellik değeri hiçbir girişe izin verilmeyeceğini belirtir ve değeri için varsayılan değer int.MaxValue
Editor
olan değeri girilebilecek karakter sayısı üzerinde geçerli bir sınır olmadığını gösterir.
Karakter aralığı
Karakter aralığı özelliği bir double
değere ayarlanarak Editor.CharacterSpacing
bir'e uygulanabilirEditor
:
<Editor ...
CharacterSpacing="10" />
Eşdeğer C# kodu:
Editor editor = new editor { CharacterSpacing = 10 };
Sonuç, tarafından görüntülenen metindeki karakterlerin cihazdan Editor
bağımsız birimler halinde aralıklı CharacterSpacing
olmasıdır.
Not
özellik CharacterSpacing
değeri ve Placeholder
özellikleri tarafından görüntülenen metne Text
uygulanır.
Düzenleyiciyi otomatik boyutlandırma
Editor
özelliği TextChanges
sabit listesi değeri EditorAutoSizeOption
olarak ayarlanarak Editor.AutoSize
içeriğine otomatik olarak boyutlandırılabilir. Bu numaralandırmanın iki değeri vardır:
Disabled
otomatik yeniden boyutlandırmanın devre dışı bırakıldığını ve varsayılan değer olduğunu gösterir.TextChanges
otomatik yeniden boyutlandırmanın etkinleştirildiğini gösterir.
Bu, kodda aşağıdaki gibi gerçekleştirilebilir:
<Editor Text="Enter text here" AutoSize="TextChanges" />
var editor = new Editor { Text = "Enter text here", AutoSize = EditorAutoSizeOption.TextChanges };
Otomatik yeniden boyutlandırma etkinleştirildiğinde, Editor
kullanıcı metinle doldurduğunda yüksekliği artar ve kullanıcı metni sildikçe yükseklik azalır.
Not
özelliği ayarlandıysa HeightRequest
otomatik Editor
olarak boyutlandırılmaz.
Klavyeyi özelleştirme
Kullanıcılar ile Editor
etkileşim kurduğunda sunulan klavye, özelliği aracılığıyla Keyboard
program aracılığıyla sınıfından aşağıdaki özelliklerden Keyboard
birine ayarlanabilir:
Chat
– emojilerin yararlı olduğu metinler ve yerler için kullanılır.Default
– varsayılan klavye.Email
– e-posta adresleri girilirken kullanılır.Numeric
– sayılar girilirken kullanılır.Plain
– herhangi birKeyboardFlags
belirtilmeden metin girerken kullanılır.Telephone
– telefon numaraları girilirken kullanılır.Text
– metin girerken kullanılır.Url
– dosya yollarını ve web adreslerini girmek için kullanılır.
Bu, XAML'de aşağıdaki gibi gerçekleştirilebilir:
<Editor Keyboard="Chat" />
Eşdeğer C# kodu:
var editor = new Editor { Keyboard = Keyboard.Chat };
Her klavyenin örnekleri Yemek Tarifleri depomuzda bulunabilir.
Sınıfı ayrıca Keyboard
büyük harfe çevirme, yazım denetimi ve öneri davranışı belirterek klavyeyi özelleştirmek için kullanılabilecek bir fabrika yöntemine sahiptir Create
. KeyboardFlags
sabit listesi değerleri yöntemine bağımsız değişken olarak belirtilir ve özelleştirilmiş Keyboard
bir değer döndürülür. Numaralandırma KeyboardFlags
aşağıdaki değerleri içerir:
None
– klavyeye özellik eklenmez.CapitalizeSentence
– girilen her tümcenin ilk sözcüğünün ilk harfinin otomatik olarak büyük harfe dönüştürüleceğini belirtir.Spellcheck
– girilen metinde yazım denetiminin gerçekleştirileceğini gösterir.Suggestions
– girilen metinde sözcük tamamlamalarının sunulacağını belirtir.CapitalizeWord
– her sözcüğün ilk harfinin otomatik olarak büyük harfe yazılacağını belirtir.CapitalizeCharacter
– her karakterin otomatik olarak büyük harfe yazılacağını gösterir.CapitalizeNone
– otomatik büyük harfe çevirme gerçekleşmeyeceğini gösterir.All
– girilen metinde yazım denetimi, sözcük tamamlamaları ve tümce büyük harf kullanımını gösterir.
Aşağıdaki XAML kod örneğinde, sözcük tamamlamaları sunmak ve girilen her karakteri büyük harfe çevirme amacıyla varsayılanın Keyboard
nasıl özelleştirileceği gösterilmektedir:
<Editor>
<Editor.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Editor.Keyboard>
</Editor>
Eşdeğer C# kodu:
var editor = new Editor();
editor.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);
Yazım denetimini etkinleştirme ve devre dışı bırakma
özelliği yazım IsSpellCheckEnabled
denetiminin etkinleştirilip etkinleştirilmediğini denetler. Varsayılan olarak özelliği olarak true
ayarlanır. Kullanıcı metin girerken, yazım hataları belirtilir.
Ancak, kullanıcı adı girme gibi bazı metin girişi senaryolarında yazım denetimi olumsuz bir deneyim sağlar ve bu nedenle özelliği false
olarak ayarlanarak IsSpellCheckEnabled
devre dışı bırakılmalıdır:
<Editor ... IsSpellCheckEnabled="false" />
var editor = new Editor { ... IsSpellCheckEnabled = false };
Not
IsSpellCheckEnabled
özelliği olarak false
ayarlandığında ve özel bir klavye kullanılmadığında, yerel yazım denetleyicisi devre dışı bırakılır. Ancak, gibi Keyboard.Chat
IsSpellCheckEnabled
yazım denetimini devre dışı bırakır bir Keyboard
ayarlanmışsa özelliği yoksayılır. Bu nedenle özelliği, açıkça devre dışı bırakılan bir Keyboard
için yazım denetimini etkinleştirmek için kullanılamaz.
Metin tahminlerini etkinleştirme ve devre dışı bırakma
özelliği, IsTextPredictionEnabled
metin tahmininin ve otomatik metin düzeltmenin etkinleştirilip etkinleştirilmediğini denetler. Varsayılan olarak özelliği olarak true
ayarlanır. Kullanıcı metin girerken sözcük tahminleri sunulur.
Ancak kullanıcı adı girme, metin tahmini ve otomatik metin düzeltme gibi bazı metin girişi senaryoları olumsuz bir deneyim sağlar ve özelliği false
olarak ayarlanarak IsTextPredictionEnabled
devre dışı bırakılmalıdır:
<Editor ... IsTextPredictionEnabled="false" />
var editor = new Editor { ... IsTextPredictionEnabled = false };
Not
IsTextPredictionEnabled
özelliği olarak false
ayarlandığında ve özel bir klavye kullanılmadığında, metin tahmini ve otomatik metin düzeltme devre dışı bırakılır. Ancak, metin tahminini devre dışı bırakabilecek bir Keyboard
ayarlanmışsa özelliği IsTextPredictionEnabled
yoksayılır. Bu nedenle, özelliği açıkça devre dışı bırakır bir Keyboard
için metin tahminini etkinleştirmek için kullanılamaz.
Renkler
Editor
özelliği aracılığıyla BackgroundColor
özel bir arka plan rengi kullanacak şekilde ayarlanabilir. Renklerin her platformda kullanılabilir olmasını sağlamak için özel bakım gereklidir. Her platformun metin rengi için farklı varsayılan değerleri olduğundan, her platform için özel bir arka plan rengi ayarlamanız gerekebilir. Her platform için kullanıcı arabirimini iyileştirme hakkında daha fazla bilgi için bkz . Platform ayarlamalarıyla çalışma.
C# dilinde:
public partial class EditorPage : ContentPage
{
public EditorPage ()
{
InitializeComponent ();
var layout = new StackLayout { Padding = new Thickness(5,10) };
this.Content = layout;
//dark blue on UWP & Android, light blue on iOS
var editor = new Editor { BackgroundColor = Device.RuntimePlatform == Device.iOS ? Color.FromHex("#A4EAFF") : Color.FromHex("#2c3e50") };
layout.Children.Add(editor);
}
}
XAML'de:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.EditorPage"
Title="Editor Demo">
<ContentPage.Content>
<StackLayout Padding="5,10">
<Editor>
<Editor.BackgroundColor>
<OnPlatform x:TypeArguments="x:Color">
<On Platform="iOS" Value="#a4eaff" />
<On Platform="Android, UWP" Value="#2c3e50" />
</OnPlatform>
</Editor.BackgroundColor>
</Editor>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Seçtiğiniz arka plan ve metin renklerinin her platformda kullanılabilir olduğundan ve yer tutucu metinleri gizlemediğinden emin olun.
Olaylar ve etkileşim
Editor
iki olayı kullanıma sunar:
- TextChanged – düzenleyicide metin değiştiğinde oluşturulur. Değişiklik öncesinde ve sonrasındaki metni sağlar.
- Tamamlandı – kullanıcı klavyedeki dönüş tuşuna basarak girişi sonlandırdığında oluşturulur.
Not
Devralındığı VisualElement
Entry
sınıfın da ve Unfocused
olayları vardırFocused
.
Tamamlandı
olayı Completed
, ile Editor
etkileşimin tamamlanmasına tepki vermek için kullanılır. Completed
, kullanıcı klavyede dönüş tuşuna girerek (veya UWP'de Sekme tuşuna basarak) bir alanla girişi sonlandırdığında oluşturulur. Olayın işleyicisi, göndereni ve EventArgs
alan genel bir olay işleyicisidir:
void EditorCompleted (object sender, EventArgs e)
{
var text = ((Editor)sender).Text; // sender is cast to an Editor to enable reading the `Text` property of the view.
}
Tamamlanan olaya kod ve XAML'de abone olunabilir:
C# dilinde:
public partial class EditorPage : ContentPage
{
public EditorPage ()
{
InitializeComponent ();
var layout = new StackLayout { Padding = new Thickness(5,10) };
this.Content = layout;
var editor = new Editor ();
editor.Completed += EditorCompleted;
layout.Children.Add(editor);
}
}
XAML'de:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.EditorPage"
Title="Editor Demo">
<ContentPage.Content>
<StackLayout Padding="5,10">
<Editor Completed="EditorCompleted" />
</StackLayout>
</ContentPage.Content>
</Contentpage>
TextChanged
Olay TextChanged
, bir alanın içeriğindeki değişikliğe tepki vermek için kullanılır.
TextChanged
her değişiklik olduğunda oluşturulur Text
Editor
. Olayın işleyicisi bir örneğini TextChangedEventArgs
alır. TextChangedEventArgs
ve NewTextValue
özellikleri aracılığıyla eski ve yeni değerlerine OldTextValue
Editor
Text
erişim sağlar:
void EditorTextChanged (object sender, TextChangedEventArgs e)
{
var oldText = e.OldTextValue;
var newText = e.NewTextValue;
}
Tamamlanan olaya kod ve XAML'de abone olunabilir:
Kod:
public partial class EditorPage : ContentPage
{
public EditorPage ()
{
InitializeComponent ();
var layout = new StackLayout { Padding = new Thickness(5,10) };
this.Content = layout;
var editor = new Editor ();
editor.TextChanged += EditorTextChanged;
layout.Children.Add(editor);
}
}
XAML'de:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TextSample.EditorPage"
Title="Editor Demo">
<ContentPage.Content>
<StackLayout Padding="5,10">
<Editor TextChanged="EditorTextChanged" />
</StackLayout>
</ContentPage.Content>
</ContentPage>