FilterOptionsControl.xaml.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Xamarin.Forms;
  7. using Xamarin.Forms.Xaml;
  8. namespace comal.timesheets
  9. {
  10. public delegate void FilterOptionChanged(string filterOption);
  11. [XamlCompilation(XamlCompilationOptions.Compile)]
  12. public partial class FilterOptionsControl : ContentView
  13. {
  14. public event FilterOptionChanged OnFilterOptionChanged;
  15. public List<string> Options { get; set; }
  16. public string CurrentOption { get; set; }
  17. public FilterOptionsControl()
  18. {
  19. InitializeComponent();
  20. Options = new List<string>();
  21. }
  22. public void CreateRadioButtonsAndSetDefault(string defaultOption)
  23. {
  24. CurrentOption = defaultOption;
  25. Device.BeginInvokeOnMainThread(() =>
  26. {
  27. foreach (string option in Options)
  28. {
  29. RadioButton radioButton = new RadioButton();
  30. radioButton.Content = option;
  31. radioButton.FontAttributes = FontAttributes.Bold;
  32. radioButton.TextColor = Color.DimGray;
  33. radioButton.Margin = new Thickness(3, 0, 3, 2);
  34. radioButton.BorderColor = Color.FromHex("#9f4576");
  35. radioButton.BorderWidth = 1;
  36. radioButton.Padding = 3;
  37. radioButton.BackgroundColor = Color.White;
  38. radioButton.CornerRadius = 10;
  39. if (option == defaultOption)
  40. {
  41. radioButton.IsChecked = true;
  42. }
  43. radioButton.CheckedChanged += ((object sender, CheckedChangedEventArgs e) =>
  44. {
  45. OnFilterOptionChanged?.Invoke(radioButton.Content.ToString());
  46. });
  47. optionsFlexLayout.Children.Add(radioButton);
  48. }
  49. });
  50. }
  51. }
  52. }