Xamarin.Forms Düzenleyici
EditorDenetim, çok satırlı girişi kabul etmek için kullanılır.
Metin ayarlama ve okuma
EditorDiğer metin sunma görünümleri gibi, özelliğini kullanıma sunar Text . Bu özellik, tarafından sunulan metni ayarlamak ve okumak için kullanılabilir Editor . Aşağıdaki örnek Text xaml 'de özelliği ayarlamayı gösterir:
<Editor x:Name="editor" Text="I am an Editor" />
C# dilinde:
var editor = new Editor { Text = "I am an Editor" };
Metni okumak için Text C# ' de özelliğe erişin:
var text = editor.Text;
Yer tutucu metni ayarla
, Editor Kullanıcı girişi depolarken yer tutucu metni göstermek üzere ayarlanabilir. Bu, "Data-LinkType =" Absolute-path ">özelliği olarak Xamarin_Forms _InputView_Placeholder ayarlanarak Placeholderstring ve genellikle için uygun olan içerik türünü belirtmek için kullanılır Editor . Ayrıca, yer tutucu metin rengi, Xamarin_Forms _InputView_PlaceholderColor "Data-LinkType =" Absolute-path ">PlaceholderColor özelliği bir olarak ayarlanarak denetlenebilir Color :
<Editor Placeholder="Enter text here" PlaceholderColor="Olive" />
var editor = new Editor { Placeholder = "Enter text here", PlaceholderColor = Color.Olive };
Metin girişini engelle
Kullanıcıların EditorIsReadOnly , için varsayılan değeri olan özelliğini ayarlayarak içindeki metni değiştirmesini engellenebilir falsetrue :
<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, öğesinin görsel görünümünü IsReadonlyEditorIsEnabled aynı zamanda, öğesinin görsel görünümünü de değiştiren özelliğin aksine değiştirmez Editor .
Metin dönüştürme
, Özelliği EditorText sabit listesinin bir değeri ayarlanarak özelliğinde depolanan metnin büyük küçük harflerini dönüştürebilir TextTransformTextTransform . Bu numaralandırma dört değere sahiptir:
Nonemetnin dönüştürülmeyeceğini gösterir.Defaultplatformun varsayılan davranışının kullanılacağını gösterir. Bu, özelliğin varsayılan değeridirTextTransform.Lowercasemetnin küçük harfe dönüştürüleceğini gösterir.Uppercasemetnin büyük harfe dönüştürüleceğini gösterir.
Aşağıdaki örnek, metnin büyük harfe dönüştürülmesini göstermektedir:
<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
Xamarin_Forms _InputView_MaxLength "Data-LinkType =" Absolute-path ">MaxLength özelliği, için izin verilen giriş uzunluğunu sınırlamak için kullanılabilir Editor . Bu özellik pozitif bir tamsayı olarak ayarlanmalıdır:
<Editor ... MaxLength="10" />
var editor = new Editor { ... MaxLength = 10 };
"Data-LinkType =" Absolute-path ">Özellik değeri 0 olan bir Xamarin_Forms _InputView_MaxLength MaxLength , hiçbir girişe izin verilmeyeceğini ve öğesinin varsayılan değeri olan değerini belirten, int.MaxValueEditor girilebilecek karakter sayısı üzerinde etkin bir sınır olmadığını gösterir.
Karakter aralığı
EditorEditor.CharacterSpacing Özelliği bir değere ayarlayarak, bir öğesine karakter aralığı uygulanabilir double :
<Editor ...
CharacterSpacing="10" />
Eşdeğer C# kodu:
Editor editor = new editor { CharacterSpacing = 10 };
Sonuç olarak, tarafından görüntülenen metindeki karakterlerin EditorCharacterSpacing cihazdan bağımsız birimler birbirinden farklı olur.
Not
CharacterSpacingÖzellik değeri, ve özellikleri tarafından gösterilecek metne uygulanır TextPlaceholder .
Bir düzenleyiciyi Otomatik Boyutlandır
EditorEditor "Data-LinkType =" Absolute-path ">Editor.AutoSize özelliği Xamarin_Forms _EditorAutoSizeOption_TextChanges" Data-linktype = "absolute-path" >olarak _Editor_AutoSize Xamarin_Forms ayarlanarak içeriğe otomatik boyuta getirilebilir ve TextChanges Bu da numaralandırmanın bir değeridir EditorAutoSizeOption . Bu numaralandırma iki değere sahiptir:
- _EditorAutoSizeOption_Disabled "Data-LinkType =" Absolute-path ">
DisabledOtomatik yeniden boyutlandırmanın devre dışı bırakıldığını ve varsayılan değer olduğunu gösterir. - Xamarin_Forms _EditorAutoSizeOption_TextChanges "Data-LinkType =" Absolute-path ">
TextChangesOtomatik yeniden boyutlandırmanın etkinleştirildiğini gösterir.
Bu, kodda aşağıdaki şekilde 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 etkin olduğunda, Editor Kullanıcı metni metin ile doldurduğunda, yüksekliği artar ve Kullanıcı metin sildiği için yükseklik azalır.
Not
EditorEditor _VisualElement_HeightRequest Xamarin_Forms "Data-LinkType =" Absolute-path ">HeightRequest özelliği ayarlandıysa, bir otomatik olarak boyutlandırmaz.
Klavyeyi özelleştirme
Kullanıcılar bir ile etkileşdiğinde sunulan klavye, Editor Xamarin_Forms Editor _InputView_Keyboard "Data-LinkType =" Absolute-path ">Keyboard özelliği aracılığıyla, sınıftan aşağıdaki özelliklerden birine Keyboard Program aracılığıyla ayarlanabilir:
- _Keyboard_Chat "Data-LinkType =" Absolute-path ">
Chat– emoji için kullanılır ve Emoji her yerde yararlıdır. - Xamarin_Forms _Keyboard_Default "Data-LinkType =" Absolute-path ">
Default– varsayılan klavye. - Xamarin_Forms _Keyboard_Email "Data-LinkType =" Absolute-path ">
Email-e-posta adresleri girerken kullanılır. - Xamarin_Forms _Keyboard_Numeric "Data-LinkType =" Absolute-path ">
Numeric– sayı girerken kullanılır. - Xamarin_Forms _Keyboard_Plain "Data-LinkType =" Absolute-path ">
Plain-metin girerken kullanılan, belirtilen herhangi bir olmadanKeyboardFlags. - Xamarin_Forms _Keyboard_Telephone "Data-LinkType =" Absolute-path ">
Telephone-telefon numarası girerken kullanılır. - Xamarin_Forms _Keyboard_Text "Data-LinkType =" Absolute-path ">
Text-metin girerken kullanılır. - Xamarin_Forms _Keyboard_Url "Data-LinkType =" Absolute-path ">
Url– dosya yollarının Web adreslerini girmek için kullanılır & .
Bu, XAML 'de şu şekilde gerçekleştirilebilir:
<Editor Keyboard="Chat" />
Eşdeğer C# kodu:
var editor = new Editor { Keyboard = Keyboard.Chat };
Her klavyeye örnek olarak, yemek tariflerimiz deposunda bulunabilir.
KeyboardSınıfı ayrıca Create , büyük harf, yazım denetimi ve öneri davranışını belirterek bir klavyeyi özelleştirmek için kullanılabilen bir fabrika yöntemine sahiptir. KeyboardFlags numaralandırma değerleri, metodun bir özelleştirilmiş döndürüldüğünden bağımsız değişken olarak belirtilir Keyboard . KeyboardFlagsSabit listesi aşağıdaki değerleri içerir:
- Xamarin_Forms _KeyboardFlags_None "Data-LinkType =" Absolute-path ">
None– klavyeye hiçbir özellik eklenmez. - Xamarin_Forms _KeyboardFlags_CapitalizeSentence "Data-LinkType =" Absolute-path ">
CapitalizeSentence– girilen her tümcenin ilk sözcüğünün ilk harfinin otomatik olarak büyük harfli olacağını gösterir. - Xamarin_Forms _KeyboardFlags_Spellcheck "Data-LinkType =" Absolute-path ">
Spellcheck– girilen metinde SpellCheck 'in gerçekleştirileceğini gösterir. - Xamarin_Forms _KeyboardFlags_Suggestions "Data-LinkType =" Absolute-path ">
Suggestions– tamamlama sözcüğünün, girilen metinde sunulmayacağını gösterir. - Xamarin_Forms _KeyboardFlags_CapitalizeWord "Data-LinkType =" Absolute-path ">
CapitalizeWord– her sözcüğün ilk harfinin otomatik olarak büyük harfli olacağını gösterir. - Xamarin_Forms _KeyboardFlags_CapitalizeCharacter "Data-LinkType =" Absolute-path ">
CapitalizeCharacter– her karakterin otomatik olarak büyük harfli olacağını gösterir. - Xamarin_Forms _KeyboardFlags_CapitalizeNone "Data-LinkType =" Absolute-path ">
CapitalizeNone– hiçbir otomatik büyük harflerin gerçekleşmeyeceğini belirtir. - Xamarin_Forms _KeyboardFlags_All "Data-LinkType =" Absolute-path ">
All– girilen metinde yazım denetimi, sözcük tamamlama ve tümce büyük/küçük harf kullanımının gerçekleşeceğini belirtir.
Aşağıdaki XAML kod örneği, Keyboard Word 'ün tamamlanabileceği ve girilen her karakteri büyük harfle bulunan varsayılan değer özelleştirmeyi gösterir:
<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
Xamarin_Forms _InputView_IsSpellCheckEnabled "Data-LinkType =" Absolute-path ">IsSpellCheckEnabled özelliği yazım denetiminin etkinleştirilip etkinleştirilmediğini denetler. Varsayılan olarak, özelliği olarak ayarlanır true . Kullanıcı metin girerken, yanlış yazımları belirtilir.
Ancak, bir Kullanıcı adı girme gibi bazı metin girişi senaryolarında, yazım denetimi negatif bir deneyim sağlar ve bu nedenle Xamarin_Forms _InputView_IsSpellCheckEnabled "Data-LinkType =" Absolute-path ">IsSpellCheckEnabled özelliği olarak ayarlanarak devre dışı bırakılmalıdır false :
<Editor ... IsSpellCheckEnabled="false" />
var editor = new Editor { ... IsSpellCheckEnabled = false };
Not
Xamarin_Forms _InputView_IsSpellCheckEnabled "Data-LinkType =" Absolute-path ">IsSpellCheckEnabled özelliği olarak ayarlandığında false ve özel bir klavye kullanılmıyorsa, yerel yazım denetleyicisi devre dışı bırakılır. Ancak, Keyboard Xamarin_Forms Keyboard _Keyboard_Chat "Data-LinkType =" Absolute-path ">gibi yazım denetimini devre dışı bırakan bir ayarlandıysa Keyboard.Chat , IsSpellCheckEnabled özelliği yok sayılır. Bu nedenle, özelliği Keyboard açıkça devre dışı bırakan bir için yazım denetimini etkinleştirmek üzere kullanılamaz.
Metin tahminini etkinleştirme ve devre dışı bırakma
IsTextPredictionEnabledÖzelliği, metin tahmini ve otomatik metin düzeltmesinin etkinleştirilip etkinleştirilmediğini denetler. Varsayılan olarak, özelliği olarak ayarlanır true . Kullanıcı metin girdiğinde, sözcük tahminleri sunulur.
Ancak, bir Kullanıcı adı girme gibi bazı metin girişi senaryolarında, metin tahmini ve otomatik metin düzeltme bir negatif deneyim sağlar ve özelliği şu şekilde ayarlanarak devre dışı bırakılmalıdır IsTextPredictionEnabledfalse :
<Editor ... IsTextPredictionEnabled="false" />
var editor = new Editor { ... IsTextPredictionEnabled = false };
Not
IsTextPredictionEnabledÖzelliği olarak ayarlandığında false ve özel bir klavye kullanılmazsa, metin tahmini ve otomatik metin düzeltme devre dışı bırakılır. Ancak, Keyboard metin tahminini devre dışı bırakan bir ayarlandıysa, IsTextPredictionEnabled özelliği yok sayılır. Bu nedenle, özelliği Keyboard açıkça devre dışı bırakan bir için metin tahminini etkinleştirmek üzere kullanılamaz.
Renkler
Editor özelliği aracılığıyla özel bir arka plan rengi kullanmak üzere ayarlanabilir BackgroundColor . Renklerin her platformda kullanılabilir olmasını sağlamak için özel dikkatli olmanız gerekir. Her platformda metin rengine ait farklı varsayılanlar 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 Tnak KS Ile ç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 metnin hiçbirini gizlemediğinizden emin olun.
Olaylar ve etkileşim
Editor iki olay sunar:
- TextChanged : metin düzenleyicide değiştiğinde tetiklenir. Değişiklikten önce ve sonra metin sağlar.
- Tamamlandı – Kullanıcı klavyede Return tuşuna basarak girişi sonlandırmışsa tetiklenir.
Not
VisualElementEntry Devralınan ve olayları da olan sınıf FocusedUnfocused .
Tamamlandı
CompletedOlayı, bir etkileşimin tamamlanmasına tepki vermek için kullanılır Editor . Completed , klavye üzerinde Return tuşunu girerek (veya UWP üzerindeki sekme tuşuna basarak), Kullanıcı girişi bir alanla bitiyorsa tetiklenir. Olay işleyicisi, göndereni alan ve bir genel olay işleyicisidir EventArgs :
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 olay, kod ve XAML 'de öğesine abone olabilir:
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ını
TextChangedOlay, bir alanın içeriğindeki bir değişikliğe tepki vermek için kullanılır.
TextChanged her değişiklikten sonra oluşturulur TextEditor . Olay işleyicisi bir örneğini alır TextChangedEventArgs . TextChangedEventArgsEditorTextOldTextValue ve özellikleri yoluyla, eski ve yeni değerlerine erişim sağlar NewTextValue :
void EditorTextChanged (object sender, TextChangedEventArgs e)
{
var oldText = e.OldTextValue;
var newText = e.NewTextValue;
}
Tamamlanan olay, kod ve XAML 'de öğesine abone olabilir:
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>
Örneği indirin