summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue1763.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue1763.cs')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue1763.cs104
1 files changed, 104 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue1763.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue1763.cs
new file mode 100644
index 00000000..e6cb31f3
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue1763.cs
@@ -0,0 +1,104 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+using Xamarin.Forms.CustomAttributes;
+
+namespace Xamarin.Forms.Controls
+{
+ [Preserve (AllMembers=true)]
+ [Issue (IssueTracker.Github, 1763, "First item of grouped ListView not firing .ItemTapped", PlatformAffected.WinPhone, NavigationBehavior.PushAsync)]
+ public class Issue1763 : TabbedPage
+ {
+ public Issue1763 ()
+ {
+ Title = "Contacts";
+
+ Children.Add (new ContactsPage ());
+ }
+ }
+
+ public class ContactsPage : ContentPage
+ {
+ public ContactsPage ()
+ {
+ var listView = new ListView {
+ ItemTemplate = new DataTemplate (() => {
+ var cell = new TextCell ();
+ cell.SetBinding (TextCell.TextProperty, new Binding ("Name"));
+ cell.SetBinding (TextCell.DetailProperty, new Binding ("Number"));
+ return cell;
+ }),
+ IsGroupingEnabled = true,
+ GroupDisplayBinding = new Binding ("Name")
+ };
+
+ var groupedContacts = new ObservableCollection<Group<ContactViewModel>> {
+ new Group<ContactViewModel> ("E", new[] {
+ new ContactViewModel { Name = "Egor1", Number = "'Tap' on this item won't fire the event" },
+ new ContactViewModel { Name = "Egor2", Number = "123" },
+ new ContactViewModel { Name = "Egor3", Number = "123" },
+ })
+ };
+
+ listView.ItemsSource = groupedContacts;
+ listView.ItemTapped += ListViewOnItemTapped;
+
+ Content = listView;
+ }
+
+ void ListViewOnItemTapped (object sender, ItemTappedEventArgs itemTappedEventArgs)
+ {
+ DisplayActionSheet ("Tapped a List item", "Cancel", "Destruction");
+ }
+ }
+
+ public class ContactViewModel : ViewModelBase2
+ {
+ string _name;
+ string _number;
+
+ public string Name
+ {
+ get { return _name; }
+ set { SetProperty (ref _name, value); }
+ }
+
+ public string Number
+ {
+ get { return _number; }
+ set { SetProperty (ref _number, value); }
+ }
+ }
+
+ public class Group<TItem> : ObservableCollection<TItem>
+ {
+ public Group (string name, IEnumerable<TItem> items)
+ {
+ Name = name;
+ foreach (var item in items)
+ Add (item);
+ }
+
+ public string Name { get; set; }
+ }
+
+ public class ViewModelBase2 : INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ protected virtual ViewModelBase2 SetProperty<T> (ref T field, T value, [CallerMemberName] string propertyName = null)
+ {
+ field = value;
+ PropertyChangedEventHandler handler = PropertyChanged;
+ if (handler != null)
+ handler (this, new PropertyChangedEventArgs (propertyName));
+ return this;
+ }
+ }
+} \ No newline at end of file