summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2951.xaml.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2951.xaml.cs')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2951.xaml.cs140
1 files changed, 140 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2951.xaml.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2951.xaml.cs
new file mode 100644
index 00000000..fb4b75ea
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2951.xaml.cs
@@ -0,0 +1,140 @@
+using System;
+using System.Collections.Generic;
+using Xamarin.Forms;
+using Xamarin.Forms.CustomAttributes;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+#if UITEST
+using Xamarin.UITest.Queries;
+using NUnit.Framework;
+#endif
+
+
+namespace Xamarin.Forms.Controls
+{
+ [Preserve (AllMembers = true)]
+ [Issue (IssueTracker.Github, 2951, "On Android, button background is not updated when color changes ")]
+ public partial class Issue2951 : TestContentPage
+ {
+ public Issue2951 ()
+ {
+ #if APP
+ InitializeComponent ();
+ #endif
+ }
+
+ protected override void Init ()
+ {
+ BindingContext = new MyViewModel ();
+ }
+
+ [Preserve (AllMembers = true)]
+ public class MyViewModel
+ {
+ public ObservableCollection<MyItemViewModel> Items { get; private set; }
+
+ public Command<MyItemViewModel> ButtonTapped { get; private set; }
+
+ public MyViewModel ()
+ {
+ ButtonTapped = new Command<MyItemViewModel> (OnItemTapped);
+
+ Items = new ObservableCollection<MyItemViewModel> ();
+
+ Items.Add (new MyItemViewModel { Name = "A", IsStarted = false });
+ Items.Add (new MyItemViewModel { Name = "B", IsStarted = false });
+ Items.Add (new MyItemViewModel { Name = "C", IsStarted = false });
+ }
+
+ void OnItemTapped (MyItemViewModel model)
+ {
+ if (model.IsStarted) {
+ Items.Remove (model);
+ } else {
+ model.IsStarted = true;
+ }
+ }
+ }
+
+ [Preserve (AllMembers = true)]
+ public class MyItemViewModel : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ string _name;
+
+ public string Name {
+ get { return _name; }
+ set {
+ _name = value;
+ OnPropertyChanged ("Name");
+ }
+ }
+
+ bool _isStarted;
+
+ public bool IsStarted {
+ get { return _isStarted; }
+ set {
+ _isStarted = value;
+ OnPropertyChanged ("IsStarted");
+ }
+ }
+
+ void OnPropertyChanged (string propertyName)
+ {
+ if (PropertyChanged != null) {
+ PropertyChanged (this, new PropertyChangedEventArgs (propertyName));
+ }
+ }
+ }
+
+ #if UITEST
+ [Test]
+ public void Issue2951Test ()
+ {
+ var bt = RunningApp.WaitForElement (c => c.Marked ("btnChangeStatus"));
+ var buttons = RunningApp.Query (c => c.Marked ("btnChangeStatus"));
+ Assert.That (buttons.Length, Is.EqualTo (3));
+ RunningApp.Tap(c => c.Marked ("btnChangeStatus").Index(1));
+ buttons = RunningApp.Query (c => c.Marked ("btnChangeStatus"));
+ var text = buttons [1].Text ?? buttons [1].Label;
+ Assert.That (text, Is.EqualTo ("B"));
+ RunningApp.Tap(c => c.Marked ("btnChangeStatus").Index(1));
+ buttons = RunningApp.Query (c => c.Marked ("btnChangeStatus"));
+ Assert.That (buttons.Length, Is.EqualTo (2));
+ //TODO: we should check the color of the button
+ //var buttonTextColor = GetProperty<Color> ("btnChangeStatus", Button.BackgroundColorProperty);
+ //Assert.AreEqual (Color.Pink, buttonTextColor);
+ }
+
+
+ #endif
+ }
+
+
+
+
+ [Preserve (AllMembers = true)]
+ public class ButtonExtensions
+ {
+ public static readonly BindableProperty IsPrimaryProperty = BindableProperty.CreateAttached<ButtonExtensions, bool> (
+ bindable => GetIsPrimary (bindable),
+ false,
+ BindingMode.TwoWay,
+ null,
+ null,
+ null,
+ null);
+
+ public static bool GetIsPrimary (BindableObject bo)
+ {
+ return (bool)bo.GetValue (IsPrimaryProperty);
+ }
+
+ public static void SetIsPrimary (BindableObject bo, bool value)
+ {
+ bo.SetValue (IsPrimaryProperty, value);
+ }
+ }
+}