using Avalonia.Input.Platform;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq;
using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Utils;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Media;
using Avalonia.Metadata;
using Avalonia.Data;
using Avalonia.Layout;
using Avalonia.Utilities;
using Avalonia.Controls.Metadata;
using Avalonia.Media.TextFormatting;
using Avalonia.Media.TextFormatting.Unicode;
using Avalonia.Automation.Peers;
namespace Avalonia.Controls
{
///
/// Represents a control that can be used to display or edit unformatted text.
///
[TemplatePart("PART_TextPresenter", typeof(TextPresenter))]
[PseudoClasses(":empty")]
public class TextBox : TemplatedControl, UndoRedoHelper.IUndoRedoHost
{
public static KeyGesture? CutGesture { get; } = AvaloniaLocator.Current
.GetService()?.Cut.FirstOrDefault();
public static KeyGesture? CopyGesture { get; } = AvaloniaLocator.Current
.GetService()?.Copy.FirstOrDefault();
public static KeyGesture? PasteGesture { get; } = AvaloniaLocator.Current
.GetService()?.Paste.FirstOrDefault();
public static readonly StyledProperty AcceptsReturnProperty =
AvaloniaProperty.Register(nameof(AcceptsReturn));
public static readonly StyledProperty AcceptsTabProperty =
AvaloniaProperty.Register(nameof(AcceptsTab));
public static readonly DirectProperty CaretIndexProperty =
AvaloniaProperty.RegisterDirect(
nameof(CaretIndex),
o => o.CaretIndex,
(o, v) => o.CaretIndex = v);
public static readonly StyledProperty IsReadOnlyProperty =
AvaloniaProperty.Register(nameof(IsReadOnly));
public static readonly StyledProperty PasswordCharProperty =
AvaloniaProperty.Register(nameof(PasswordChar));
public static readonly StyledProperty SelectionBrushProperty =
AvaloniaProperty.Register(nameof(SelectionBrushProperty));
public static readonly StyledProperty SelectionForegroundBrushProperty =
AvaloniaProperty.Register(nameof(SelectionForegroundBrushProperty));
public static readonly StyledProperty CaretBrushProperty =
AvaloniaProperty.Register(nameof(CaretBrushProperty));
public static readonly DirectProperty SelectionStartProperty =
AvaloniaProperty.RegisterDirect(
nameof(SelectionStart),
o => o.SelectionStart,
(o, v) => o.SelectionStart = v);
public static readonly DirectProperty SelectionEndProperty =
AvaloniaProperty.RegisterDirect(
nameof(SelectionEnd),
o => o.SelectionEnd,
(o, v) => o.SelectionEnd = v);
public static readonly StyledProperty MaxLengthProperty =
AvaloniaProperty.Register(nameof(MaxLength), defaultValue: 0);
public static readonly StyledProperty MaxLinesProperty =
AvaloniaProperty.Register(nameof(MaxLines), defaultValue: 0);
public static readonly DirectProperty TextProperty =
TextBlock.TextProperty.AddOwnerWithDataValidation(
o => o.Text,
(o, v) => o.Text = v,
defaultBindingMode: BindingMode.TwoWay,
enableDataValidation: true);
public static readonly StyledProperty TextAlignmentProperty =
TextBlock.TextAlignmentProperty.AddOwner();
///
/// Defines the property.
///
public static readonly StyledProperty HorizontalContentAlignmentProperty =
ContentControl.HorizontalContentAlignmentProperty.AddOwner();
///
/// Defines the property.
///
public static readonly StyledProperty VerticalContentAlignmentProperty =
ContentControl.VerticalContentAlignmentProperty.AddOwner();
public static readonly StyledProperty TextWrappingProperty =
TextBlock.TextWrappingProperty.AddOwner();
public static readonly StyledProperty WatermarkProperty =
AvaloniaProperty.Register(nameof(Watermark));
public static readonly StyledProperty UseFloatingWatermarkProperty =
AvaloniaProperty.Register(nameof(UseFloatingWatermark));
public static readonly DirectProperty NewLineProperty =
AvaloniaProperty.RegisterDirect(nameof(NewLine),
textbox => textbox.NewLine, (textbox, newline) => textbox.NewLine = newline);
public static readonly StyledProperty