using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; using Xamarin.Forms.Xaml; using XF.Material.Forms.Resources.Typography; namespace InABox.Mobile { public class MobileSearchBarTextChangedArgs : EventArgs { public string Text { get; private set; } public MobileSearchBarTextChangedArgs(String text) { Text = text; } } public delegate void MobileSearchBatTextChanged(object sender, MobileSearchBarTextChangedArgs args); [XamlCompilation(XamlCompilationOptions.Compile)] public partial class MobileSearchBar { private static readonly BindableProperty BorderColorProperty = BindableProperty.Create( nameof(BorderColor), typeof(Color), typeof(MobileSearchBar), Color.Gray); public Color BorderColor { get => (Color)GetValue(BorderColorProperty); set => SetValue(BorderColorProperty, value); } private static readonly BindableProperty TextBackgroundColorProperty = BindableProperty.Create( nameof(TextBackgroundColor), typeof(Color), typeof(MobileSearchBar), XF.Material.Forms.Material.Color.Surface); public Color TextBackgroundColor { get => (Color)GetValue(TextBackgroundColorProperty); set => SetValue(TextBackgroundColorProperty, value); } private static readonly BindableProperty TextColorProperty = BindableProperty.Create( nameof(TextColor), typeof(Color), typeof(MobileSearchBar), XF.Material.Forms.Material.Color.OnSurface); public Color TextColor { get => (Color)GetValue(TextColorProperty); set => SetValue(TextColorProperty, value); } private static readonly BindableProperty TextSizeProperty = BindableProperty.Create( nameof(TextSize), typeof(double), typeof(MobileSearchBar), 16D); public double TextSize { get => (double)GetValue(TextSizeProperty); set => SetValue(TextSizeProperty, value); } private static readonly BindableProperty PlaceHolderProperty = BindableProperty.Create( nameof(PlaceHolder), typeof(String), typeof(MobileSearchBar) ); public String PlaceHolder { get => (String)GetValue(PlaceHolderProperty); set => SetValue(PlaceHolderProperty, value); } public event MobileSearchBatTextChanged TextChanged; public MobileSearchBar() { InitializeComponent(); } private void _search_OnTextChanged(object sender, TextChangedEventArgs e) { TextChanged?.Invoke(this,new MobileSearchBarTextChangedArgs(e.NewTextValue)); } } }