diff options
103 files changed, 3436 insertions, 517 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2411.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2411.cs index 20c73c93..70e81197 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2411.cs +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2411.cs @@ -15,90 +15,97 @@ using Xamarin.UITest; namespace Xamarin.Forms.Controls.TestCasesPages { - [Preserve (AllMembers=true)] - [Issue (IssueTracker.Github, 2411, "ListView.ScrollTo not working in TabbedPage", PlatformAffected.Android)] + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Github, 2411, "ListView.ScrollTo not working in TabbedPage", PlatformAffected.Android)] public class Issue2411 : TestTabbedPage { - protected override void Init () + protected override void Init() { - Children.Add (new XamarinListViewScrollToBugPage1 ()); - Children.Add (new XamarinListViewScrollToBugPage2 ()); - Children.Add (new XamarinListViewScrollToBugPage3 ()); + Children.Add(new XamarinListViewScrollToBugPage1()); + Children.Add(new XamarinListViewScrollToBugPage2()); + Children.Add(new XamarinListViewScrollToBugPage3()); } #if UITEST [Test] #if __ANDROID__ - [Ignore ("Appearing event is tied to virtualization in TabbedPage for Material")] + [Ignore("Appearing event is tied to virtualization in TabbedPage for Material")] #endif - [Issue (IssueTracker.Github, 2411, "ScrollToPositon.MakeVisible not called every time TabbedPage", PlatformAffected.Android)] - public void Issue2411ScrollToPositionMakeVisible () + [Issue(IssueTracker.Github, 2411, "ScrollToPosition.MakeVisible not called every time TabbedPage", PlatformAffected.Android)] + public void Issue2411ScrollToPositionMakeVisible() { - RunningApp.WaitForElement (q => q.Marked ("99 99 99 99 99 99")); - RunningApp.Screenshot ("ScrollTo working correctly"); - RunningApp.Tap (q => q.Marked ("Crash in ScrollToPosition.End")); - RunningApp.Screenshot ("On Second Tab"); - RunningApp.WaitForElement (q => q.Marked ("2 0 0 0 0 0 0")); - RunningApp.Tap (q => q.Marked ("Scroll To in OnAppearing")); - RunningApp.Screenshot ("On First Tab"); - RunningApp.WaitForElement (q => q.Marked ("99 99 99 99 99 99")); - - var listViewBound = RunningApp.Query (q => q.Marked ("listView"))[0].Rect; - Xamarin.Forms.Core.UITests.Gestures.ScrollForElement (RunningApp, "* marked:'0 0 0 0 0 0'", new Xamarin.Forms.Core.UITests.Drag (listViewBound, Xamarin.Forms.Core.UITests.Drag.Direction.TopToBottom, Xamarin.Forms.Core.UITests.Drag.DragLength.Long)); - RunningApp.Screenshot ("Scrolled to Top"); - - RunningApp.Tap (q => q.Marked ("Crash in ScrollToPosition.End")); - RunningApp.Screenshot ("On Second Tab"); - RunningApp.WaitForElement (q => q.Marked ("2 0 0 0 0 0 0")); - RunningApp.Tap (q => q.Marked ("Scroll To in OnAppearing")); - RunningApp.Screenshot ("On First Tab"); - RunningApp.WaitForElement (q => q.Marked ("99 99 99 99 99 99")); + RunningApp.WaitForElement(q => q.Marked("99 99 99 99 99 99")); + RunningApp.Screenshot("ScrollTo working correctly"); + RunningApp.Tap(q => q.Marked("Crash in ScrollToPosition.End")); + RunningApp.Screenshot("On Second Tab"); + RunningApp.WaitForElement(q => q.Marked("2 0 0 0 0 0 0")); + RunningApp.Tap(q => q.Marked("Scroll To in OnAppearing")); + RunningApp.Screenshot("On First Tab"); + RunningApp.WaitForElement(q => q.Marked("99 99 99 99 99 99")); + + var listViewBound = RunningApp.Query(q => q.Marked("listView"))[0].Rect; + Xamarin.Forms.Core.UITests.Gestures.ScrollForElement(RunningApp, "* marked:'0 0 0 0 0 0'", new Xamarin.Forms.Core.UITests.Drag(listViewBound, Xamarin.Forms.Core.UITests.Drag.Direction.TopToBottom, Xamarin.Forms.Core.UITests.Drag.DragLength.Long)); + RunningApp.Screenshot("Scrolled to Top"); + + RunningApp.Tap(q => q.Marked("Crash in ScrollToPosition.End")); + RunningApp.Screenshot("On Second Tab"); + RunningApp.WaitForElement(q => q.Marked("2 0 0 0 0 0 0")); + RunningApp.Tap(q => q.Marked("Scroll To in OnAppearing")); + RunningApp.Screenshot("On First Tab"); + RunningApp.WaitForElement(q => q.Marked("99 99 99 99 99 99")); } [Test] - [Issue (IssueTracker.Github, 2411, "ScrollToPositon.End crashing in TabbedPage", PlatformAffected.Android)] - public void Issue2411ScrollToPositionEndCrash () + [Issue(IssueTracker.Github, 2411, "ScrollToPosition.End crashing in TabbedPage", PlatformAffected.Android)] + public void Issue2411ScrollToPositionEndCrash() { - RunningApp.Tap (q => q.Marked ("Crash in ScrollToPosition.End")); - RunningApp.Screenshot ("On Second Tab"); - RunningApp.Tap (q => q.Marked ("Scroll To in OnAppearing")); - RunningApp.Screenshot ("On First Tab"); - RunningApp.Tap (q => q.Marked ("Crash in ScrollToPosition.End")); - RunningApp.Screenshot ("On Second Tab Again"); - RunningApp.Tap (q => q.Marked ("ScrollToPosition.End End - Not animated")); - RunningApp.WaitForElement (q => q.Marked ("2 99 99 99 99 99 99")); + RunningApp.Tap(q => q.Marked("Crash in ScrollToPosition.End")); + RunningApp.Screenshot("On Second Tab"); + RunningApp.Tap(q => q.Marked("Scroll To in OnAppearing")); + RunningApp.Screenshot("On First Tab"); + RunningApp.Tap(q => q.Marked("Crash in ScrollToPosition.End")); + RunningApp.Screenshot("On Second Tab Again"); + RunningApp.Tap(q => q.Marked("ScrollToPosition.End End - Not animated")); + RunningApp.WaitForElement(q => q.Marked("2 99 99 99 99 99 99")); } [Test] - [Issue (IssueTracker.Github, 2411, "ScrollToPositon.End crashing in TabbedPage", PlatformAffected.Android)] - public void Issue2411ScrollToPositionWrongOnUneven () + [Issue(IssueTracker.Github, 2411, "ScrollToPositon.End crashing in TabbedPage", PlatformAffected.Android)] + public void Issue2411ScrollToPositionWrongOnUneven() { - RunningApp.Tap (q => q.Marked ("Crash in ScrollToPosition.End")); - RunningApp.Tap (q => q.Marked ("Scroll To in OnAppearing Uneven")); - RunningApp.Screenshot ("On Third Tab"); - RunningApp.WaitForElement (q => q.Marked ("99 99 99 99 99 99")); + RunningApp.Tap(q => q.Marked("Crash in ScrollToPosition.End")); + RunningApp.Tap(q => q.Marked("Scroll To in OnAppearing Uneven")); + + var dontRun = RunningApp.Query(q => q.Marked(XamarinListViewScrollToBugPage3.DontRun)); + if (dontRun.Length > 0) + Assert.Inconclusive("Ignored on iOS < 9 until Bugzilla 28277 is resolved."); + + RunningApp.Screenshot("On Third Tab"); + RunningApp.WaitForElement(q => q.Marked("99 99 99 99 99 99")); } #endif } - [Preserve (AllMembers = true)] + [Preserve(AllMembers = true)] internal class ListObj { public string Name { get; set; } } - [Preserve (AllMembers = true)] + [Preserve(AllMembers = true)] public class CellTemplateScrollTo : ViewCell { - public CellTemplateScrollTo () + public CellTemplateScrollTo() { - Label cellLabel = new Label () { + Label cellLabel = new Label() + { HorizontalOptions = LayoutOptions.FillAndExpand, }; - cellLabel.SetBinding (Label.TextProperty, new Binding ("Name", BindingMode.OneWay)); + cellLabel.SetBinding(Label.TextProperty, new Binding("Name", BindingMode.OneWay)); - StackLayout root = new StackLayout () { + StackLayout root = new StackLayout() + { Children = { cellLabel } @@ -108,87 +115,97 @@ namespace Xamarin.Forms.Controls.TestCasesPages } } - [Preserve (AllMembers = true)] + [Preserve(AllMembers = true)] public class CellTemplateScrollToUneven : CellTemplateScrollTo { - public CellTemplateScrollToUneven () + public CellTemplateScrollToUneven() { Height = 60 + new Random().Next(10, 100); } } - [Preserve (AllMembers = true)] + [Preserve(AllMembers = true)] public class XamarinListViewScrollToBugPage1 : ContentPage { ListView _listView; - ObservableCollection<ListObj> _collection = new ObservableCollection<ListObj> (); + ObservableCollection<ListObj> _collection = new ObservableCollection<ListObj>(); - public XamarinListViewScrollToBugPage1 () + public XamarinListViewScrollToBugPage1() { Title = "Scroll To in OnAppearing"; - for (int i = 0; i < 100; i++) { - var item = new ListObj { Name = string.Format ("{0} {0} {0} {0} {0} {0}", i) }; - _collection.Add (item); + for (int i = 0; i < 100; i++) + { + var item = new ListObj { Name = string.Format("{0} {0} {0} {0} {0} {0}", i) }; + _collection.Add(item); } - _listView = new ListView { + _listView = new ListView + { ItemsSource = _collection, - ItemTemplate = new DataTemplate (typeof(CellTemplateScrollTo)) + ItemTemplate = new DataTemplate(typeof(CellTemplateScrollTo)) }; _listView.AutomationId = "listView"; - Content = new StackLayout { + Content = new StackLayout + { Children = { _listView } }; } - protected override void OnAppearing () + protected override void OnAppearing() { - base.OnAppearing (); - _listView.ScrollTo (_collection.Last(), ScrollToPosition.MakeVisible, false); + base.OnAppearing(); + _listView.ScrollTo(_collection.Last(), ScrollToPosition.MakeVisible, false); } } - [Preserve (AllMembers = true)] + [Preserve(AllMembers = true)] public class XamarinListViewScrollToBugPage2 : ContentPage { ListView _listView; - ObservableCollection<ListObj> _collection = new ObservableCollection<ListObj> (); + ObservableCollection<ListObj> _collection = new ObservableCollection<ListObj>(); - public XamarinListViewScrollToBugPage2 () + public XamarinListViewScrollToBugPage2() { Title = "Crash in ScrollToPosition.End"; - for (int i = 0; i < 100; i++) { - var item = new ListObj { Name = string.Format ("2 {0} {0} {0} {0} {0} {0}", i) }; - _collection.Add (item); + for (int i = 0; i < 100; i++) + { + var item = new ListObj { Name = string.Format("2 {0} {0} {0} {0} {0} {0}", i) }; + _collection.Add(item); } - _listView = new ListView { + _listView = new ListView + { ItemsSource = _collection, - ItemTemplate = new DataTemplate (typeof(CellTemplateScrollTo)) + ItemTemplate = new DataTemplate(typeof(CellTemplateScrollTo)) }; - var endButton = new Button { + var endButton = new Button + { Text = "ScrollToPosition.End End - Not animated", - Command = new Command (() => { - _listView.ScrollTo (_collection.Last(), ScrollToPosition.End, false); + Command = new Command(() => + { + _listView.ScrollTo(_collection.Last(), ScrollToPosition.End, false); }) }; - var endButtonAnimated = new Button { + var endButtonAnimated = new Button + { Text = "ScrollToPosition.MakeVisible End - Animated", - Command = new Command (() => { - _listView.ScrollTo (_collection.Last(), ScrollToPosition.MakeVisible, true); + Command = new Command(() => + { + _listView.ScrollTo(_collection.Last(), ScrollToPosition.MakeVisible, true); }) }; - Content = new StackLayout { + Content = new StackLayout + { Children = { endButton, endButtonAnimated, @@ -201,30 +218,50 @@ namespace Xamarin.Forms.Controls.TestCasesPages public class XamarinListViewScrollToBugPage3 : ContentPage { ListView _listView; - ObservableCollection<ListObj> _collection = new ObservableCollection<ListObj> (); - int _i =0; - public XamarinListViewScrollToBugPage3 () + ObservableCollection<ListObj> _collection = new ObservableCollection<ListObj>(); + int _i = 0; + public const string DontRun = "Don't run"; + public XamarinListViewScrollToBugPage3() { Title = "Scroll To in OnAppearing Uneven"; - for (_i = 0; _i < 100; _i++) { - var item = new ListObj { Name = string.Format ("{0} {0} {0} {0} {0} {0}", _i) }; - _collection.Add (item); + bool runTest = true; + // This test will fail in iOS < 9 because using ScrollTo with UnevenRows with estimation is currently not working. + // It did not previously fail because this test used `TakePerformanceHit` to turn off row estimation. However, as + // that was never a public feature, it was never a valid fix for the test. + // https://bugzilla.xamarin.com/show_bug.cgi?id=28277 +#if !UITEST + if (App.IOSVersion < 9) + runTest = false; +#endif + + if (!runTest) + _collection.Add(new ListObj { Name = DontRun }); + else + { + for (_i = 0; _i < 100; _i++) + { + var item = new ListObj { Name = string.Format("{0} {0} {0} {0} {0} {0}", _i) }; + _collection.Add(item); + } } - var btnAdd = new Button { + var btnAdd = new Button + { Text = "Add item", WidthRequest = 100 }; btnAdd.Clicked += BtnAddOnClicked; - var btnBottom = new Button { + var btnBottom = new Button + { Text = "Scroll to end", WidthRequest = 100 }; btnBottom.Clicked += BtnBottomOnClicked; - var btnPanel = new StackLayout { + var btnPanel = new StackLayout + { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Center, Children = { @@ -233,19 +270,20 @@ namespace Xamarin.Forms.Controls.TestCasesPages } }; - _listView = new ListView { + _listView = new ListView + { ItemsSource = _collection, BackgroundColor = Color.Transparent, VerticalOptions = LayoutOptions.FillAndExpand, HasUnevenRows = true, - ItemTemplate = new DataTemplate (typeof(CellTemplateScrollToUneven)) + ItemTemplate = new DataTemplate(typeof(CellTemplateScrollToUneven)) }; - _listView.TakePerformanceHit = true; _listView.ItemTapped += (sender, e) => ((ListView)sender).SelectedItem = null; _listView.AutomationId = "listView"; - Content = new StackLayout { + Content = new StackLayout + { Children = { btnPanel, _listView @@ -253,10 +291,10 @@ namespace Xamarin.Forms.Controls.TestCasesPages }; } - protected override void OnAppearing () + protected override void OnAppearing() { - base.OnAppearing (); - _listView.ScrollTo (_collection.Last(), ScrollToPosition.MakeVisible, false); + base.OnAppearing(); + _listView.ScrollTo(_collection.Last(), ScrollToPosition.MakeVisible, false); } void BtnBottomOnClicked(object sender, EventArgs e) @@ -268,7 +306,7 @@ namespace Xamarin.Forms.Controls.TestCasesPages void BtnAddOnClicked(object sender, EventArgs eventArgs) { var str = string.Format("Item {0}", _i++); - var item = new ListObj { Name = string.Format ("{0} {0} {0} {0} {0} {0}", _i) }; + var item = new ListObj { Name = string.Format("{0} {0} {0} {0} {0} {0}", _i) }; _collection.Add(item); _listView.ScrollTo(item, ScrollToPosition.End, true); diff --git a/Xamarin.Forms.Core.UnitTests/CellTests.cs b/Xamarin.Forms.Core.UnitTests/CellTests.cs index 0006b4cf..e7c6266b 100644 --- a/Xamarin.Forms.Core.UnitTests/CellTests.cs +++ b/Xamarin.Forms.Core.UnitTests/CellTests.cs @@ -44,7 +44,7 @@ namespace Xamarin.Forms.Core.UnitTests bool emitted = false; cell.Appearing += (sender, args) => emitted = true; - cell.SendAppearing (); + ((ICellController)cell).SendAppearing (); Assert.True (emitted); Assert.True (cell.OnAppearingSent); Assert.False (cell.OnDisappearingSent); @@ -58,7 +58,7 @@ namespace Xamarin.Forms.Core.UnitTests bool emitted = false; cell.Disappearing += (sender, args) => emitted = true; - cell.SendDisappearing (); + ((ICellController)cell).SendDisappearing (); Assert.True (emitted); Assert.False (cell.OnAppearingSent); Assert.True (cell.OnDisappearingSent); @@ -159,7 +159,7 @@ namespace Xamarin.Forms.Core.UnitTests var cell = new ViewCell { Parent = lv }; int numberOfCalls = 0; - cell.ForceUpdateSizeRequested += (object sender, System.EventArgs e) => { numberOfCalls++; }; + ((ICellController)cell).ForceUpdateSizeRequested += (object sender, System.EventArgs e) => { numberOfCalls++; }; cell.ForceUpdateSize (); cell.ForceUpdateSize (); @@ -178,7 +178,7 @@ namespace Xamarin.Forms.Core.UnitTests var cell = new ViewCell { Parent = lv }; int numberOfCalls = 0; - cell.ForceUpdateSizeRequested += (object sender, System.EventArgs e) => { numberOfCalls++; }; + ((ICellController)cell).ForceUpdateSizeRequested += (object sender, System.EventArgs e) => { numberOfCalls++; }; cell.ForceUpdateSize (); diff --git a/Xamarin.Forms.Core.UnitTests/MenuItemTests.cs b/Xamarin.Forms.Core.UnitTests/MenuItemTests.cs index d6163058..665e5062 100644 --- a/Xamarin.Forms.Core.UnitTests/MenuItemTests.cs +++ b/Xamarin.Forms.Core.UnitTests/MenuItemTests.cs @@ -25,7 +25,7 @@ namespace Xamarin.Forms.Core.UnitTests bool activated = false; item.Clicked += (sender, args) => activated = true; - item.Activate(); + ((IMenuItemController)item).Activate(); Assert.That (activated, Is.True); } @@ -42,7 +42,7 @@ namespace Xamarin.Forms.Core.UnitTests }); var item = new MenuItem { Command = c, CommandParameter = param }; - item.Activate(); + ((IMenuItemController)item).Activate(); Assert.That (executed, Is.True); } @@ -54,7 +54,7 @@ namespace Xamarin.Forms.Core.UnitTests protected override void Activate (T source) { - source.Activate(); + ((IMenuItemController)source).Activate(); } protected override BindableProperty IsEnabledProperty diff --git a/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs b/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs index e9acde45..6433d521 100644 --- a/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs +++ b/Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using NUnit.Framework; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Core.UnitTests { diff --git a/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs b/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs index 32155be3..fd3459e3 100644 --- a/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs +++ b/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs @@ -1,6 +1,7 @@ using System.Linq; using System.Threading.Tasks; using NUnit.Framework; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Core.UnitTests { diff --git a/Xamarin.Forms.Core/Cells/Cell.cs b/Xamarin.Forms.Core/Cells/Cell.cs index 3b16d06a..863e0342 100644 --- a/Xamarin.Forms.Core/Cells/Cell.cs +++ b/Xamarin.Forms.Core/Cells/Cell.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; namespace Xamarin.Forms { - public abstract class Cell : Element + public abstract class Cell : Element, ICellController { public static readonly BindableProperty IsEnabledProperty = BindableProperty.Create("IsEnabled", typeof(bool), typeof(Cell), true, propertyChanged: OnIsEnabledPropertyChanged); @@ -78,6 +78,13 @@ namespace Xamarin.Forms public event EventHandler Disappearing; + event EventHandler ForceUpdateSizeRequested; + event EventHandler ICellController.ForceUpdateSizeRequested + { + add { ForceUpdateSizeRequested += value; } + remove { ForceUpdateSizeRequested -= value; } + } + public void ForceUpdateSize() { if (_nextCallToForceUpdateSizeQueued) @@ -148,9 +155,7 @@ namespace Xamarin.Forms base.OnPropertyChanging(propertyName); } - internal event EventHandler ForceUpdateSizeRequested; - - internal void SendAppearing() + void ICellController.SendAppearing() { OnAppearing(); @@ -159,7 +164,7 @@ namespace Xamarin.Forms container.SendCellAppearing(this); } - internal void SendDisappearing() + void ICellController.SendDisappearing() { OnDisappearing(); diff --git a/Xamarin.Forms.Core/Cells/EntryCell.cs b/Xamarin.Forms.Core/Cells/EntryCell.cs index cccdcae1..b61f685f 100644 --- a/Xamarin.Forms.Core/Cells/EntryCell.cs +++ b/Xamarin.Forms.Core/Cells/EntryCell.cs @@ -2,7 +2,7 @@ using System; namespace Xamarin.Forms { - public class EntryCell : Cell + public class EntryCell : Cell, IEntryCellController { public static readonly BindableProperty TextProperty = BindableProperty.Create("Text", typeof(string), typeof(EntryCell), null, BindingMode.TwoWay); @@ -64,7 +64,7 @@ namespace Xamarin.Forms public event EventHandler Completed; - internal void SendCompleted() + void IEntryCellController.SendCompleted() { EventHandler handler = Completed; if (handler != null) diff --git a/Xamarin.Forms.Core/Cells/ICellController.cs b/Xamarin.Forms.Core/Cells/ICellController.cs new file mode 100644 index 00000000..ab5d08c2 --- /dev/null +++ b/Xamarin.Forms.Core/Cells/ICellController.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Xamarin.Forms +{ + public interface ICellController + { + event EventHandler ForceUpdateSizeRequested; + + void SendAppearing(); + void SendDisappearing(); + } +} diff --git a/Xamarin.Forms.Core/Cells/IEntryCellController.cs b/Xamarin.Forms.Core/Cells/IEntryCellController.cs new file mode 100644 index 00000000..b3722d67 --- /dev/null +++ b/Xamarin.Forms.Core/Cells/IEntryCellController.cs @@ -0,0 +1,8 @@ + +namespace Xamarin.Forms +{ + public interface IEntryCellController + { + void SendCompleted(); + } +} diff --git a/Xamarin.Forms.Core/IItemsView.cs b/Xamarin.Forms.Core/IItemsView.cs index 7f968769..d2c721ba 100644 --- a/Xamarin.Forms.Core/IItemsView.cs +++ b/Xamarin.Forms.Core/IItemsView.cs @@ -1,6 +1,9 @@ +using System; +using System.Collections; + namespace Xamarin.Forms { - internal interface IItemsView<T> where T : BindableObject + public interface IItemsView<T> where T : BindableObject { T CreateDefault(object item); void SetupContent(T content, int index); diff --git a/Xamarin.Forms.Core/IListProxy.cs b/Xamarin.Forms.Core/IListProxy.cs new file mode 100644 index 00000000..cc6fd500 --- /dev/null +++ b/Xamarin.Forms.Core/IListProxy.cs @@ -0,0 +1,12 @@ + +using System.Collections; +using System.Collections.Specialized; + +namespace Xamarin.Forms +{ + public interface IListProxy : IList + { + event NotifyCollectionChangedEventHandler CollectionChanged; + IEnumerable ProxiedEnumerable { get; } + } +} diff --git a/Xamarin.Forms.Core/IListViewController.cs b/Xamarin.Forms.Core/IListViewController.cs index 078f13b7..68c99de9 100644 --- a/Xamarin.Forms.Core/IListViewController.cs +++ b/Xamarin.Forms.Core/IListViewController.cs @@ -1,13 +1,20 @@ -namespace Xamarin.Forms +using System; + +namespace Xamarin.Forms { - internal interface IListViewController : IViewController + public interface IListViewController : IViewController { - Element FooterElement { get; } + event EventHandler<ScrollToRequestedEventArgs> ScrollToRequested; + ListViewCachingStrategy CachingStrategy { get; } + Element FooterElement { get; } Element HeaderElement { get; } - bool RefreshAllowed { get; } + Cell CreateDefaultCell(object item); + string GetDisplayTextFromGroup(object cell); + void NotifyRowTapped(int index, int inGroupIndex, Cell cell); + void NotifyRowTapped(int index, Cell cell); void SendCellAppearing(Cell cell); void SendCellDisappearing(Cell cell); void SendRefreshing(); diff --git a/Xamarin.Forms.Core/IMenuItemController.cs b/Xamarin.Forms.Core/IMenuItemController.cs new file mode 100644 index 00000000..4737b170 --- /dev/null +++ b/Xamarin.Forms.Core/IMenuItemController.cs @@ -0,0 +1,10 @@ +namespace Xamarin.Forms +{ + public interface IMenuItemController + { + bool IsEnabled { get; } + string IsEnabledPropertyName { get; } + + void Activate(); + } +} diff --git a/Xamarin.Forms.Core/ITableModel.cs b/Xamarin.Forms.Core/ITableModel.cs new file mode 100644 index 00000000..4778b908 --- /dev/null +++ b/Xamarin.Forms.Core/ITableModel.cs @@ -0,0 +1,16 @@ +namespace Xamarin.Forms +{ + public interface ITableModel + { + Cell GetCell(int section, int row); + Cell GetHeaderCell(int section); + object GetItem(int section, int row); + int GetRowCount(int section); + int GetSectionCount(); + string[] GetSectionIndexTitles(); + string GetSectionTitle(int section); + void RowLongPressed(int section, int row); + void RowSelected(object item); + void RowSelected(int section, int row); + } +} diff --git a/Xamarin.Forms.Core/ITableViewController.cs b/Xamarin.Forms.Core/ITableViewController.cs new file mode 100644 index 00000000..0f7cb08a --- /dev/null +++ b/Xamarin.Forms.Core/ITableViewController.cs @@ -0,0 +1,11 @@ +using System; + +namespace Xamarin.Forms +{ + public interface ITableViewController + { + event EventHandler ModelChanged; + + ITableModel Model { get; } + } +} diff --git a/Xamarin.Forms.Core/ITemplatedItemsList.cs b/Xamarin.Forms.Core/ITemplatedItemsList.cs new file mode 100644 index 00000000..ae979d71 --- /dev/null +++ b/Xamarin.Forms.Core/ITemplatedItemsList.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.ComponentModel; +using System.Collections; + +namespace Xamarin.Forms +{ + public interface ITemplatedItemsList<TItem> : IReadOnlyList<TItem>, INotifyCollectionChanged where TItem : BindableObject + { + event NotifyCollectionChangedEventHandler GroupedCollectionChanged; + event PropertyChangedEventHandler PropertyChanged; + + object BindingContext { get; } + string Name { get; set; } + TItem HeaderContent { get; } + IEnumerable ItemsSource { get; } + IReadOnlyList<string> ShortNames { get; } + + int GetGlobalIndexForGroup(ITemplatedItemsList<TItem> group); + int GetGlobalIndexOfItem(object item); + ITemplatedItemsList<TItem> GetGroup(int index); + Tuple<int, int> GetGroupAndIndexOfItem(object item); + Tuple<int, int> GetGroupAndIndexOfItem(object group, object item); + int GetGroupIndexFromGlobal(int globalIndex, out int leftOver); + int IndexOf(TItem item); + TItem UpdateContent(TItem content, int index); + TItem UpdateHeader(TItem content, int groupIndex); + } +} diff --git a/Xamarin.Forms.Core/ITemplatedItemsListScrollToRequestedEventArgs.cs b/Xamarin.Forms.Core/ITemplatedItemsListScrollToRequestedEventArgs.cs new file mode 100644 index 00000000..4a006157 --- /dev/null +++ b/Xamarin.Forms.Core/ITemplatedItemsListScrollToRequestedEventArgs.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Xamarin.Forms +{ + public interface ITemplatedItemsListScrollToRequestedEventArgs + { + object Group { get; } + object Item { get; } + } +} diff --git a/Xamarin.Forms.Core/ITemplatedItemsView.cs b/Xamarin.Forms.Core/ITemplatedItemsView.cs new file mode 100644 index 00000000..01d4e22e --- /dev/null +++ b/Xamarin.Forms.Core/ITemplatedItemsView.cs @@ -0,0 +1,12 @@ +using System.ComponentModel; + +namespace Xamarin.Forms +{ + public interface ITemplatedItemsView<TItem> : IItemsView<TItem> where TItem : BindableObject + { + event PropertyChangedEventHandler PropertyChanged; + + IListProxy ListProxy { get; } + ITemplatedItemsList<TItem> TemplatedItems { get; } + } +} diff --git a/Xamarin.Forms.Core/Internals/CellExtensions.cs b/Xamarin.Forms.Core/Internals/CellExtensions.cs new file mode 100644 index 00000000..f15268b1 --- /dev/null +++ b/Xamarin.Forms.Core/Internals/CellExtensions.cs @@ -0,0 +1,38 @@ +using System; + +namespace Xamarin.Forms.Internals +{ + public static class CellExtensions + { + public static bool GetIsGroupHeader<TView, TItem>(this TItem cell) where TView : BindableObject, ITemplatedItemsView<TItem> where TItem : BindableObject + { + return TemplatedItemsList<TView, TItem>.GetIsGroupHeader(cell); + } + + public static void SetIsGroupHeader<TView, TItem>(this TItem cell, bool value) where TView : BindableObject, ITemplatedItemsView<TItem> where TItem : BindableObject + { + TemplatedItemsList<TView, TItem>.SetIsGroupHeader(cell, value); + } + + public static TItem GetGroupHeaderContent<TView, TItem>(this TItem cell) where TView : BindableObject, ITemplatedItemsView<TItem> where TItem : BindableObject + { + var group = TemplatedItemsList<TView, TItem>.GetGroup(cell); + return group.HeaderContent; + } + + public static int GetIndex<TView, TItem>(this TItem cell) where TView : BindableObject, ITemplatedItemsView<TItem> where TItem : BindableObject + { + return TemplatedItemsList<TView, TItem>.GetIndex(cell); + } + + public static ITemplatedItemsList<TItem> GetGroup<TView, TItem>(this TItem cell) where TView : BindableObject, ITemplatedItemsView<TItem> where TItem : BindableObject + { + return TemplatedItemsList<TView, TItem>.GetGroup(cell); + } + + public static Tuple<int, int> GetPath(this Cell cell) + { + return TableView.TableSectionModel.GetPath(cell); + } + } +} diff --git a/Xamarin.Forms.Core/NotifyCollectionChangedEventArgsEx.cs b/Xamarin.Forms.Core/Internals/NotifyCollectionChangedEventArgsEx.cs index bb6a2b84..b398c7d9 100644 --- a/Xamarin.Forms.Core/NotifyCollectionChangedEventArgsEx.cs +++ b/Xamarin.Forms.Core/Internals/NotifyCollectionChangedEventArgsEx.cs @@ -1,9 +1,9 @@ using System.Collections; using System.Collections.Specialized; -namespace Xamarin.Forms +namespace Xamarin.Forms.Internals { - internal class NotifyCollectionChangedEventArgsEx : NotifyCollectionChangedEventArgs + public class NotifyCollectionChangedEventArgsEx : NotifyCollectionChangedEventArgs { public NotifyCollectionChangedEventArgsEx(int count, NotifyCollectionChangedAction action) : base(action) { diff --git a/Xamarin.Forms.Core/NotifyCollectionChangedEventArgsExtensions.cs b/Xamarin.Forms.Core/Internals/NotifyCollectionChangedEventArgsExtensions.cs index 2ddf92c4..8b88dc38 100644 --- a/Xamarin.Forms.Core/NotifyCollectionChangedEventArgsExtensions.cs +++ b/Xamarin.Forms.Core/Internals/NotifyCollectionChangedEventArgsExtensions.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Collections.Specialized; -namespace Xamarin.Forms +namespace Xamarin.Forms.Internals { - internal static class NotifyCollectionChangedEventArgsExtensions + public static class NotifyCollectionChangedEventArgsExtensions { public static void Apply<TFrom>(this NotifyCollectionChangedEventArgs self, IList<TFrom> from, IList<object> to) { diff --git a/Xamarin.Forms.Core/ToolbarTracker.cs b/Xamarin.Forms.Core/Internals/ToolbarTracker.cs index 74580065..69f275e8 100644 --- a/Xamarin.Forms.Core/ToolbarTracker.cs +++ b/Xamarin.Forms.Core/Internals/ToolbarTracker.cs @@ -5,9 +5,9 @@ using System.Collections.Specialized; using System.ComponentModel; using System.Linq; -namespace Xamarin.Forms +namespace Xamarin.Forms.Internals { - internal class ToolbarTracker + public class ToolbarTracker { int _masterDetails; Page _target; diff --git a/Xamarin.Forms.Core/ItemsView.cs b/Xamarin.Forms.Core/ItemsView.cs index 51c105bd..b99fdf03 100644 --- a/Xamarin.Forms.Core/ItemsView.cs +++ b/Xamarin.Forms.Core/ItemsView.cs @@ -1,8 +1,10 @@ using System.Collections; +using Xamarin.Forms.Internals; namespace Xamarin.Forms { - public abstract class ItemsView<TVisual> : View, IItemsView<TVisual> where TVisual : BindableObject + + public abstract class ItemsView<TVisual> : View, ITemplatedItemsView<TVisual> where TVisual : BindableObject { /* public static readonly BindableProperty InfiniteScrollingProperty = @@ -40,11 +42,13 @@ namespace Xamarin.Forms this.templatedItems.ForceUpdate(); }*/ - internal ListProxy ListProxy + IListProxy ITemplatedItemsView<TVisual>.ListProxy { get { return TemplatedItems.ListProxy; } } + ITemplatedItemsList<TVisual> ITemplatedItemsView<TVisual>.TemplatedItems { get { return TemplatedItems; } } + internal TemplatedItemsList<ItemsView<TVisual>, TVisual> TemplatedItems { get; } TVisual IItemsView<TVisual>.CreateDefault(object item) diff --git a/Xamarin.Forms.Core/ListProxy.cs b/Xamarin.Forms.Core/ListProxy.cs index 229dcb6b..c2f5c9d8 100644 --- a/Xamarin.Forms.Core/ListProxy.cs +++ b/Xamarin.Forms.Core/ListProxy.cs @@ -3,10 +3,11 @@ using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; +using Xamarin.Forms.Internals; namespace Xamarin.Forms { - internal sealed class ListProxy : IReadOnlyList<object>, IList, INotifyCollectionChanged + internal sealed class ListProxy : IReadOnlyList<object>, IListProxy, INotifyCollectionChanged { readonly ICollection _collection; readonly IList _list; diff --git a/Xamarin.Forms.Core/ListView.cs b/Xamarin.Forms.Core/ListView.cs index 71feea68..deebda7f 100644 --- a/Xamarin.Forms.Core/ListView.cs +++ b/Xamarin.Forms.Core/ListView.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Diagnostics; using System.Windows.Input; using Xamarin.Forms.Platform; +using Xamarin.Forms.Internals; namespace Xamarin.Forms { @@ -59,8 +60,6 @@ namespace Xamarin.Forms public ListView() { - TakePerformanceHit = false; - VerticalOptions = HorizontalOptions = LayoutOptions.FillAndExpand; TemplatedItems.IsGroupingEnabledProperty = IsGroupingEnabledProperty; @@ -190,8 +189,13 @@ namespace Xamarin.Forms } internal ListViewCachingStrategy CachingStrategy { get; private set; } - - internal bool TakePerformanceHit { get; set; } + ListViewCachingStrategy IListViewController.CachingStrategy + { + get + { + return CachingStrategy; + } + } bool RefreshAllowed { @@ -342,14 +346,32 @@ namespace Xamarin.Forms content.Parent = null; } - internal Cell CreateDefaultCell(object item) + Cell IListViewController.CreateDefaultCell(object item) { return CreateDefault(item); } + string IListViewController.GetDisplayTextFromGroup(object cell) + { + int groupIndex = TemplatedItems.GetGlobalIndexOfGroup(cell); + var group = TemplatedItems.GetGroup(groupIndex); + + string displayBinding = null; + + if (GroupDisplayBinding != null) + displayBinding = group.Name; + + if (GroupShortNameBinding != null) + displayBinding = group.ShortName; + + // TODO: what if they set both? should it default to the ShortName, like it will here? + // ShortNames binding did not appear to be functional before. + return displayBinding; + } + internal void NotifyRowTapped(int groupIndex, int inGroupIndex, Cell cell = null) { - TemplatedItemsList<ItemsView<Cell>, Cell> group = TemplatedItems.GetGroup(groupIndex); + var group = TemplatedItems.GetGroup(groupIndex); bool changed = _previousGroupSelected != groupIndex || _previousRowSelected != inGroupIndex; @@ -381,6 +403,16 @@ namespace Xamarin.Forms NotifyRowTapped(0, index, cell); } + void IListViewController.NotifyRowTapped(int index, Cell cell) + { + NotifyRowTapped(index, cell); + } + + void IListViewController.NotifyRowTapped(int index, int inGroupIndex, Cell cell) + { + NotifyRowTapped(index, inGroupIndex, cell); + } + internal override void OnIsPlatformEnabledChanged() { base.OnIsPlatformEnabledChanged(); @@ -393,6 +425,7 @@ namespace Xamarin.Forms } internal event EventHandler<ScrollToRequestedEventArgs> ScrollToRequested; + event EventHandler<ScrollToRequestedEventArgs> IListViewController.ScrollToRequested { add { ScrollToRequested += value; } remove { ScrollToRequested -= value; } } void OnCommandCanExecuteChanged(object sender, EventArgs eventArgs) { diff --git a/Xamarin.Forms.Core/MenuItem.cs b/Xamarin.Forms.Core/MenuItem.cs index 3e830445..84ad0327 100644 --- a/Xamarin.Forms.Core/MenuItem.cs +++ b/Xamarin.Forms.Core/MenuItem.cs @@ -3,7 +3,7 @@ using System.Windows.Input; namespace Xamarin.Forms { - public class MenuItem : BaseMenuItem + public class MenuItem : BaseMenuItem, IMenuItemController { public static readonly BindableProperty TextProperty = BindableProperty.Create("Text", typeof(string), typeof(MenuItem), null); @@ -19,6 +19,14 @@ namespace Xamarin.Forms internal static readonly BindableProperty IsEnabledProperty = BindableProperty.Create("IsEnabled", typeof(bool), typeof(ToolbarItem), true); + string IMenuItemController.IsEnabledPropertyName + { + get + { + return IsEnabledProperty.PropertyName; + } + } + public ICommand Command { get { return (ICommand)GetValue(CommandProperty); } @@ -55,6 +63,14 @@ namespace Xamarin.Forms set { SetValue(IsEnabledProperty, value); } } + bool IMenuItemController.IsEnabled + { + get + { + return IsEnabled; + } + } + bool IsEnabledCore { set { SetValueCore(IsEnabledProperty, value); } @@ -69,7 +85,7 @@ namespace Xamarin.Forms handler(this, EventArgs.Empty); } - internal void Activate() + void IMenuItemController.Activate() { if (Command != null) { diff --git a/Xamarin.Forms.Core/ScrollToRequestedEventArgs.cs b/Xamarin.Forms.Core/ScrollToRequestedEventArgs.cs index 28231df7..6570328d 100644 --- a/Xamarin.Forms.Core/ScrollToRequestedEventArgs.cs +++ b/Xamarin.Forms.Core/ScrollToRequestedEventArgs.cs @@ -2,7 +2,7 @@ namespace Xamarin.Forms { - public class ScrollToRequestedEventArgs : EventArgs + public class ScrollToRequestedEventArgs : EventArgs, ITemplatedItemsListScrollToRequestedEventArgs { internal ScrollToRequestedEventArgs(double scrollX, double scrollY, bool shouldAnimate) { @@ -50,7 +50,22 @@ namespace Xamarin.Forms public bool ShouldAnimate { get; private set; } internal object Group { get; private set; } + object ITemplatedItemsListScrollToRequestedEventArgs.Group + { + get + { + return Group; + } + } internal object Item { get; private set; } + object ITemplatedItemsListScrollToRequestedEventArgs.Item + { + get + { + return Item; + } + } + } }
\ No newline at end of file diff --git a/Xamarin.Forms.Core/TableModel.cs b/Xamarin.Forms.Core/TableModel.cs index 866b7a69..e570b22b 100644 --- a/Xamarin.Forms.Core/TableModel.cs +++ b/Xamarin.Forms.Core/TableModel.cs @@ -2,7 +2,7 @@ using System; namespace Xamarin.Forms { - internal abstract class TableModel + internal abstract class TableModel: ITableModel { public virtual Cell GetCell(int section, int row) { diff --git a/Xamarin.Forms.Core/TableView.cs b/Xamarin.Forms.Core/TableView.cs index a88999b7..bd9f964e 100644 --- a/Xamarin.Forms.Core/TableView.cs +++ b/Xamarin.Forms.Core/TableView.cs @@ -3,12 +3,13 @@ using System.Collections.Specialized; using System.ComponentModel; using System.Linq; using Xamarin.Forms.Platform; +using Xamarin.Forms.Internals; namespace Xamarin.Forms { [ContentProperty("Root")] [RenderWith(typeof(_TableViewRenderer))] - public class TableView : View + public class TableView : View, ITableViewController { public static readonly BindableProperty RowHeightProperty = BindableProperty.Create("RowHeight", typeof(int), typeof(TableView), -1); @@ -85,6 +86,13 @@ namespace Xamarin.Forms OnModelChanged(); } } + ITableModel ITableViewController.Model + { + get + { + return Model; + } + } protected override void OnBindingContextChanged() { @@ -113,6 +121,11 @@ namespace Xamarin.Forms } internal event EventHandler ModelChanged; + event EventHandler ITableViewController.ModelChanged + { + add { ModelChanged += value; } + remove { ModelChanged -= value; } + } void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { diff --git a/Xamarin.Forms.Core/TemplatedItemsList.cs b/Xamarin.Forms.Core/TemplatedItemsList.cs index 814f5835..75a0d394 100644 --- a/Xamarin.Forms.Core/TemplatedItemsList.cs +++ b/Xamarin.Forms.Core/TemplatedItemsList.cs @@ -6,11 +6,14 @@ using System.ComponentModel; using System.Linq; using System.Threading.Tasks; using Cadenza.Collections; +using Xamarin.Forms.Internals; namespace Xamarin.Forms { - internal sealed class TemplatedItemsList<TView, TItem> : BindableObject, IReadOnlyList<TItem>, IList, INotifyCollectionChanged, IDisposable where TView : BindableObject, IItemsView<TItem> - where TItem : BindableObject + + internal sealed class TemplatedItemsList<TView, TItem> : BindableObject, ITemplatedItemsList<TItem>, IList, IDisposable + where TView : BindableObject, IItemsView<TItem> + where TItem : BindableObject { public static readonly BindableProperty NameProperty = BindableProperty.Create("Name", typeof(string), typeof(TemplatedItemsList<TView, TItem>), null); @@ -85,6 +88,12 @@ namespace Xamarin.Forms ListProxy = new ListProxy(new object[0]); } + event PropertyChangedEventHandler ITemplatedItemsList<TItem>.PropertyChanged + { + add { PropertyChanged += value; } + remove { PropertyChanged -= value; } + } + public BindingBase GroupDisplayBinding { get { return _groupDisplayBinding; } @@ -179,9 +188,9 @@ namespace Xamarin.Forms } } - internal ListProxy ListProxy + internal IListProxy ListProxy { - get { return (ListProxy)GetValue(ListProxyPropertyKey.BindableProperty); } + get { return (IListProxy)GetValue(ListProxyPropertyKey.BindableProperty); } private set { SetValue(ListProxyPropertyKey, value); } } @@ -337,7 +346,7 @@ namespace Xamarin.Forms return count; } - public int GetGlobalIndexForGroup(TemplatedItemsList<TView, TItem> group) + public int GetGlobalIndexForGroup(ITemplatedItemsList<TItem> group) { if (group == null) throw new ArgumentNullException("group"); @@ -493,6 +502,11 @@ namespace Xamarin.Forms } public event NotifyCollectionChangedEventHandler GroupedCollectionChanged; + event NotifyCollectionChangedEventHandler ITemplatedItemsList<TItem>.GroupedCollectionChanged + { + add { GroupedCollectionChanged += value; } + remove { GroupedCollectionChanged -= value; } + } public int IndexOf(TItem item) { @@ -536,6 +550,11 @@ namespace Xamarin.Forms return _groupedItems[index]; } + ITemplatedItemsList<TItem> ITemplatedItemsList<TItem>.GetGroup(int index) + { + return GetGroup(index); + } + internal static TemplatedItemsList<TView, TItem> GetGroup(TItem item) { if (item == null) @@ -590,6 +609,10 @@ namespace Xamarin.Forms object item = ListProxy[index]; return UpdateContent(content, index, item); } + TItem ITemplatedItemsList<TItem>.UpdateContent(TItem content, int index) + { + return UpdateContent(content, index); + } internal TItem UpdateHeader(TItem content, int groupIndex) { @@ -608,6 +631,10 @@ namespace Xamarin.Forms return content; } + TItem ITemplatedItemsList<TItem>.UpdateHeader(TItem content, int groupIndex) + { + return UpdateHeader(content, groupIndex); + } void BindableOnPropertyChanged(object sender, PropertyChangedEventArgs e) { @@ -644,6 +671,14 @@ namespace Xamarin.Forms return (IEnumerable)_itemsView.GetValue(_itemSourceProperty); } + object ITemplatedItemsList<TItem>.BindingContext + { + get + { + return BindingContext; + } + } + void GroupedReset() { if (_groupedItems != null) diff --git a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj index 55b60bbc..3ba0c05b 100644 --- a/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj +++ b/Xamarin.Forms.Core/Xamarin.Forms.Core.csproj @@ -64,6 +64,8 @@ <Compile Include="BoundsTypeConverter.cs" /> <Compile Include="CastingEnumerator.cs" /> <Compile Include="Cells\EntryCell.cs" /> + <Compile Include="Cells\ICellController.cs" /> + <Compile Include="Cells\IEntryCellController.cs" /> <Compile Include="Cells\ImageCell.cs" /> <Compile Include="Cells\INativeElementView.cs" /> <Compile Include="ChatKeyboard.cs" /> @@ -84,6 +86,8 @@ <Compile Include="DataTemplateSelector.cs" /> <Compile Include="DateChangedEventArgs.cs" /> <Compile Include="DelegateLogListener.cs" /> + <Compile Include="EnumerableExtensions.cs" /> + <Compile Include="IFontElement.cs" /> <Compile Include="DependencyAttribute.cs" /> <Compile Include="DependencyFetchTarget.cs" /> <Compile Include="DeviceOrientation.cs" /> @@ -92,6 +96,8 @@ <Compile Include="ElementEventArgs.cs" /> <Compile Include="ElementTemplate.cs" /> <Compile Include="EmailKeyboard.cs" /> + <Compile Include="IListProxy.cs" /> + <Compile Include="IMenuItemController.cs" /> <Compile Include="IEntryController.cs" /> <Compile Include="IImageController.cs" /> <Compile Include="INavigationPageController.cs" /> @@ -119,7 +125,6 @@ <Compile Include="IElementController.cs" /> <Compile Include="IExpressionSearch.cs" /> <Compile Include="IExtendedTypeConverter.cs" /> - <Compile Include="IFontElement.cs" /> <Compile Include="IGestureRecognizer.cs" /> <Compile Include="IItemsView.cs" /> <Compile Include="IItemViewController.cs" /> @@ -134,6 +139,7 @@ <Compile Include="IPageController.cs" /> <Compile Include="IPanGestureController.cs" /> <Compile Include="IPinchGestureController.cs" /> + <Compile Include="IPlatform.cs" /> <Compile Include="IProvideParentValues.cs" /> <Compile Include="IProvideValueTarget.cs" /> <Compile Include="IRegisterable.cs" /> @@ -141,6 +147,11 @@ <Compile Include="IResourcesProvider.cs" /> <Compile Include="IRootObjectProvider.cs" /> <Compile Include="IScrollViewController.cs" /> + <Compile Include="ITableModel.cs" /> + <Compile Include="ITableViewController.cs" /> + <Compile Include="ITemplatedItemsList.cs" /> + <Compile Include="ITemplatedItemsListScrollToRequestedEventArgs.cs" /> + <Compile Include="ITemplatedItemsView.cs" /> <Compile Include="ISearchBarController.cs" /> <Compile Include="IStreamImageSource.cs" /> <Compile Include="ItemTappedEventArgs.cs" /> @@ -174,8 +185,8 @@ <Compile Include="NavigationEventArgs.cs" /> <Compile Include="NavigationModel.cs" /> <Compile Include="Internals\NavigationRequestedEventArgs.cs" /> - <Compile Include="NotifyCollectionChangedEventArgsEx.cs" /> - <Compile Include="NotifyCollectionChangedEventArgsExtensions.cs" /> + <Compile Include="Internals\NotifyCollectionChangedEventArgsEx.cs" /> + <Compile Include="Internals\NotifyCollectionChangedEventArgsExtensions.cs" /> <Compile Include="NullEffect.cs" /> <Compile Include="NumericKeyboard.cs" /> <Compile Include="ObservableList.cs" /> @@ -203,6 +214,7 @@ <Compile Include="ReadOnlyCastingList.cs" /> <Compile Include="ReadOnlyListAdapter.cs" /> <Compile Include="RectangleTypeConverter.cs" /> + <Compile Include="Registrar.cs" /> <Compile Include="RenderWithAttribute.cs" /> <Compile Include="ResolutionGroupNameAttribute.cs" /> <Compile Include="ResourcesChangedEventArgs.cs" /> @@ -230,6 +242,7 @@ <Compile Include="TelephoneKeyboard.cs" /> <Compile Include="TemplateBinding.cs" /> <Compile Include="TemplatedItemsList.cs" /> + <Compile Include="Internals\CellExtensions.cs" /> <Compile Include="TemplatedPage.cs" /> <Compile Include="TemplatedView.cs" /> <Compile Include="TemplateUtilities.cs" /> @@ -265,8 +278,6 @@ <Compile Include="Color.cs" /> <Compile Include="ResourceDictionary.cs" /> <Compile Include="EventArg.cs" /> - <Compile Include="IPlatform.cs" /> - <Compile Include="EnumerableExtensions.cs" /> <Compile Include="Size.cs" /> <Compile Include="GestureState.cs" /> <Compile Include="Point.cs" /> @@ -286,7 +297,6 @@ <Compile Include="DataTemplate.cs" /> <Compile Include="ListProxy.cs" /> <Compile Include="AbsoluteLayout.cs" /> - <Compile Include="Registrar.cs" /> <Compile Include="ActivityIndicator.cs" /> <Compile Include="BoxView.cs" /> <Compile Include="Button.cs" /> @@ -318,7 +328,7 @@ <Compile Include="TabbedPage.cs" /> <Compile Include="TemplateExtensions.cs" /> <Compile Include="TimePicker.cs" /> - <Compile Include="ToolbarTracker.cs" /> + <Compile Include="Internals\ToolbarTracker.cs" /> <Compile Include="ViewExtensions.cs" /> <Compile Include="ViewState.cs" /> <Compile Include="WeakReferenceExtensions.cs" /> diff --git a/Xamarin.Forms.Pages.UnitTests/Xamarin.Forms.Pages.UnitTests.csproj b/Xamarin.Forms.Pages.UnitTests/Xamarin.Forms.Pages.UnitTests.csproj index 7d211310..e8444d21 100644 --- a/Xamarin.Forms.Pages.UnitTests/Xamarin.Forms.Pages.UnitTests.csproj +++ b/Xamarin.Forms.Pages.UnitTests/Xamarin.Forms.Pages.UnitTests.csproj @@ -81,6 +81,9 @@ <ItemGroup> <None Include="packages.config" /> </ItemGroup> + <ItemGroup> + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs index 277be331..cb4fcdbb 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs @@ -653,12 +653,13 @@ namespace Xamarin.Forms.Platform.Android.AppCompat foreach (ToolbarItem item in _toolbarTracker.ToolbarItems) { + IMenuItemController controller = item; item.PropertyChanged += HandleToolbarItemPropertyChanged; if (item.Order == ToolbarItemOrder.Secondary) { IMenuItem menuItem = menu.Add(item.Text); - menuItem.SetEnabled(item.IsEnabled); - menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(item.Activate)); + menuItem.SetEnabled(controller.IsEnabled); + menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(controller.Activate)); } else { @@ -670,9 +671,9 @@ namespace Xamarin.Forms.Platform.Android.AppCompat if (iconBitmap != null) menuItem.SetIcon(iconBitmap); } - menuItem.SetEnabled(item.IsEnabled); + menuItem.SetEnabled(controller.IsEnabled); menuItem.SetShowAsAction(ShowAsAction.Always); - menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(item.Activate)); + menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(controller.Activate)); } } } diff --git a/Xamarin.Forms.Platform.Android/CellAdapter.cs b/Xamarin.Forms.Platform.Android/CellAdapter.cs index 58c35a89..4c8ac10d 100644 --- a/Xamarin.Forms.Platform.Android/CellAdapter.cs +++ b/Xamarin.Forms.Platform.Android/CellAdapter.cs @@ -202,7 +202,7 @@ namespace Xamarin.Forms.Platform.Android if (action.Command != null) action.Command.CanExecuteChanged += commandChanged; - if (!action.IsEnabled) + if (!((IMenuItemController)action).IsEnabled) item.SetEnabled(false); } } @@ -247,7 +247,7 @@ namespace Xamarin.Forms.Platform.Android void OnActionItemClickedImpl(IMenuItem item) { int index = item.ItemId; - MenuItem action = ActionModeContext.ContextActions[index]; + IMenuItemController action = ActionModeContext.ContextActions[index]; action.Activate(); } diff --git a/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs b/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs index 7ae8aad5..74c56dbd 100644 --- a/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs +++ b/Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs @@ -9,6 +9,7 @@ using Android.Widget; using AView = Android.Views.View; using AColor = Android.Graphics.Color; using AColorDraw = Android.Graphics.Drawables.ColorDrawable; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { diff --git a/Xamarin.Forms.Platform.Android/Cells/CellFactory.cs b/Xamarin.Forms.Platform.Android/Cells/CellFactory.cs index 589236c3..0967fa16 100644 --- a/Xamarin.Forms.Platform.Android/Cells/CellFactory.cs +++ b/Xamarin.Forms.Platform.Android/Cells/CellFactory.cs @@ -2,6 +2,7 @@ using Android.Content; using Android.Views; using AView = Android.Views.View; using AListView = Android.Widget.ListView; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { diff --git a/Xamarin.Forms.Platform.Android/Cells/CellRenderer.cs b/Xamarin.Forms.Platform.Android/Cells/CellRenderer.cs index d9d4eee5..e62a8d4e 100644 --- a/Xamarin.Forms.Platform.Android/Cells/CellRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Cells/CellRenderer.cs @@ -5,6 +5,7 @@ using Android.Views; using Android.Widget; using AView = Android.Views.View; using Object = Java.Lang.Object; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { @@ -36,7 +37,7 @@ namespace Xamarin.Forms.Platform.Android if (renderHolder != null) { Cell oldCell = renderHolder.Renderer.Cell; - oldCell.SendDisappearing(); + ((ICellController)oldCell).SendDisappearing(); if (Cell != oldCell) SetRenderer(oldCell, null); @@ -54,7 +55,7 @@ namespace Xamarin.Forms.Platform.Android holder.Renderer = this; Cell.PropertyChanged += PropertyChangedHandler; - Cell.SendAppearing(); + ((ICellController)Cell).SendAppearing(); Performance.Stop(); @@ -85,9 +86,10 @@ namespace Xamarin.Forms.Platform.Android protected void WireUpForceUpdateSizeRequested(Cell cell, AView nativeCell) { - cell.ForceUpdateSizeRequested -= _onForceUpdateSizeRequested; + ICellController cellController = cell; + cellController.ForceUpdateSizeRequested -= _onForceUpdateSizeRequested; - _onForceUpdateSizeRequested = delegate + _onForceUpdateSizeRequested = (sender, e) => { // RenderHeight may not be changed, but that's okay, since we // don't actually use the height argument in the OnMeasure override. @@ -96,7 +98,7 @@ namespace Xamarin.Forms.Platform.Android nativeCell.SetMinimumWidth(nativeCell.MeasuredWidth); }; - cell.ForceUpdateSizeRequested += _onForceUpdateSizeRequested; + cellController.ForceUpdateSizeRequested += _onForceUpdateSizeRequested; } internal static CellRenderer GetRenderer(BindableObject cell) @@ -120,7 +122,6 @@ namespace Xamarin.Forms.Platform.Android } renderer.OnCellPropertyChanged(sender, e); - ; } class RendererHolder : Object diff --git a/Xamarin.Forms.Platform.Android/Cells/EntryCellRenderer.cs b/Xamarin.Forms.Platform.Android/Cells/EntryCellRenderer.cs index 00330928..e46422a0 100644 --- a/Xamarin.Forms.Platform.Android/Cells/EntryCellRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Cells/EntryCellRenderer.cs @@ -58,7 +58,7 @@ namespace Xamarin.Forms.Platform.Android void OnEditingCompleted() { - var entryCell = (EntryCell)Cell; + var entryCell = (IEntryCellController)Cell; entryCell.SendCompleted(); } diff --git a/Xamarin.Forms.Platform.Android/Cells/TextCellRenderer.cs b/Xamarin.Forms.Platform.Android/Cells/TextCellRenderer.cs index cbaaa2b7..b678ee1c 100644 --- a/Xamarin.Forms.Platform.Android/Cells/TextCellRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Cells/TextCellRenderer.cs @@ -3,6 +3,7 @@ using Android.Content; using Android.Views; using AView = Android.Views.View; using AColor = Android.Graphics.Color; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { @@ -59,7 +60,7 @@ namespace Xamarin.Forms.Platform.Android var cell = (TextCell)Cell; View.MainText = cell.Text; - if (!TemplatedItemsList<ItemsView<Cell>, Cell>.GetIsGroupHeader(cell)) + if (!cell.GetIsGroupHeader<ItemsView<Cell>, Cell>()) View.SetDefaultMainTextColor(Color.Accent); else View.SetDefaultMainTextColor(Color.Default); diff --git a/Xamarin.Forms.Platform.Android/Cells/ViewCellRenderer.cs b/Xamarin.Forms.Platform.Android/Cells/ViewCellRenderer.cs index 4bf83395..9604364a 100644 --- a/Xamarin.Forms.Platform.Android/Cells/ViewCellRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Cells/ViewCellRenderer.cs @@ -1,6 +1,7 @@ using Android.Content; using Android.Views; using AView = Android.Views.View; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { diff --git a/Xamarin.Forms.Platform.Android/Platform.cs b/Xamarin.Forms.Platform.Android/Platform.cs index 65c3b8cf..4561fa8f 100644 --- a/Xamarin.Forms.Platform.Android/Platform.cs +++ b/Xamarin.Forms.Platform.Android/Platform.cs @@ -15,6 +15,7 @@ using Android.Views; using Android.Widget; using Xamarin.Forms.Platform.Android.AppCompat; using FragmentManager = Android.Support.V4.App.FragmentManager; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { @@ -347,12 +348,13 @@ namespace Xamarin.Forms.Platform.Android foreach (ToolbarItem item in _toolbarTracker.ToolbarItems) { + IMenuItemController controller = item; item.PropertyChanged += HandleToolbarItemPropertyChanged; if (item.Order == ToolbarItemOrder.Secondary) { IMenuItem menuItem = menu.Add(item.Text); - menuItem.SetEnabled(item.IsEnabled); - menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(item.Activate)); + menuItem.SetEnabled(controller.IsEnabled); + menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(controller.Activate)); } else { @@ -363,9 +365,9 @@ namespace Xamarin.Forms.Platform.Android if (iconBitmap != null) menuItem.SetIcon(iconBitmap); } - menuItem.SetEnabled(item.IsEnabled); + menuItem.SetEnabled(controller.IsEnabled); menuItem.SetShowAsAction(ShowAsAction.Always); - menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(item.Activate)); + menuItem.SetOnMenuItemClickListener(new GenericMenuClickListener(controller.Activate)); } } } diff --git a/Xamarin.Forms.Platform.Android/Renderers/ListViewAdapter.cs b/Xamarin.Forms.Platform.Android/Renderers/ListViewAdapter.cs index 522ff4b2..667226f6 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/ListViewAdapter.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/ListViewAdapter.cs @@ -8,6 +8,7 @@ using Android.Views; using Android.Widget; using AView = Android.Views.View; using AListView = Android.Widget.ListView; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { @@ -31,6 +32,9 @@ namespace Xamarin.Forms.Platform.Android AView _lastSelected; WeakReference<Cell> _selectedCell; + IListViewController Controller => _listView; + ITemplatedItemsView<Cell> TemplatedItemsView => _listView; + public ListViewAdapter(Context context, AListView realListView, ListView listView) : base(context) { _context = context; @@ -40,8 +44,9 @@ namespace Xamarin.Forms.Platform.Android if (listView.SelectedItem != null) SelectItem(listView.SelectedItem); - listView.TemplatedItems.CollectionChanged += OnCollectionChanged; - listView.TemplatedItems.GroupedCollectionChanged += OnGroupedCollectionChanged; + var templatedItems = ((ITemplatedItemsView<Cell>)listView).TemplatedItems; + templatedItems.CollectionChanged += OnCollectionChanged; + templatedItems.GroupedCollectionChanged += OnGroupedCollectionChanged; listView.ItemSelected += OnItemSelected; realListView.OnItemClickListener = this; @@ -54,12 +59,13 @@ namespace Xamarin.Forms.Platform.Android { get { - int count = _listView.TemplatedItems.Count; + var templatedItems = TemplatedItemsView.TemplatedItems; + int count = templatedItems.Count; if (_listView.IsGroupingEnabled) { - for (var i = 0; i < _listView.TemplatedItems.Count; i++) - count += _listView.TemplatedItems.GetGroup(i).Count; + for (var i = 0; i < templatedItems.Count; i++) + count += templatedItems.GetGroup(i).Count; } return count; @@ -87,7 +93,7 @@ namespace Xamarin.Forms.Platform.Android return cell.BindingContext; } - return _listView.ListProxy[index]; + return TemplatedItemsView.ListProxy[index]; } } @@ -115,7 +121,7 @@ namespace Xamarin.Forms.Platform.Android itemTemplate = _listView.ItemTemplate; else { - group = _listView.TemplatedItems.GetGroupIndexFromGlobal(position, out row); + group = TemplatedItemsView.TemplatedItems.GetGroupIndexFromGlobal(position, out row); if (row == 0) { @@ -138,9 +144,9 @@ namespace Xamarin.Forms.Platform.Android { object item = null; if (_listView.IsGroupingEnabled) - item = _listView.TemplatedItems.GetGroup(group).ListProxy[row]; + item = ((ITemplatedItemsView<Cell>)TemplatedItemsView.TemplatedItems.GetGroup(group)).ListProxy[row]; else - item = _listView.TemplatedItems.ListProxy[position]; + item = ((ITemplatedItemsView<Cell>)TemplatedItemsView.TemplatedItems).ListProxy[position]; itemTemplate = selector.SelectTemplate(item, _listView); } int key; @@ -159,7 +165,7 @@ namespace Xamarin.Forms.Platform.Android Performance.Start(); - ListViewCachingStrategy cachingStrategy = _listView.CachingStrategy; + ListViewCachingStrategy cachingStrategy = Controller.CachingStrategy; var nextCellIsHeader = false; if (cachingStrategy == ListViewCachingStrategy.RetainElement || convertView == null) { @@ -170,7 +176,7 @@ namespace Xamarin.Forms.Platform.Android cell = cells[0]; if (cells.Count == 2) - nextCellIsHeader = TemplatedItemsList<ItemsView<Cell>, Cell>.GetIsGroupHeader(cells[1]); + nextCellIsHeader = cells[1].GetIsGroupHeader<ItemsView<Cell>, Cell>(); } if (cell == null) @@ -208,18 +214,20 @@ namespace Xamarin.Forms.Platform.Android ContextView = null; } // We are going to re-set the Platform here because in some cases (headers mostly) its possible this is unset and - // when the binding context gets updated the measure passes will all fail. By applying this hear the Update call + // when the binding context gets updated the measure passes will all fail. By applying this here the Update call // further down will result in correct layouts. cell.Platform = _listView.Platform; - cell.SendDisappearing(); + ICellController cellController = cell; + cellController.SendDisappearing(); int row = position; var group = 0; + var templatedItems = TemplatedItemsView.TemplatedItems; if (_listView.IsGroupingEnabled) - group = _listView.TemplatedItems.GetGroupIndexFromGlobal(position, out row); + group = templatedItems.GetGroupIndexFromGlobal(position, out row); - TemplatedItemsList<ItemsView<Cell>, Cell> templatedList = _listView.TemplatedItems.GetGroup(group); + var templatedList = templatedItems.GetGroup(group); if (_listView.IsGroupingEnabled) { @@ -231,7 +239,7 @@ namespace Xamarin.Forms.Platform.Android else templatedList.UpdateContent(cell, row); - cell.SendAppearing(); + cellController.SendAppearing(); if (cell.BindingContext == ActionModeObject) { @@ -277,7 +285,7 @@ namespace Xamarin.Forms.Platform.Android else bline = layout.GetChildAt(1); - bool isHeader = TemplatedItemsList<ItemsView<Cell>, Cell>.GetIsGroupHeader(cell); + bool isHeader = cell.GetIsGroupHeader<ItemsView<Cell>, Cell>(); Color separatorColor = _listView.SeparatorColor; @@ -320,19 +328,20 @@ namespace Xamarin.Forms.Platform.Android { ListView list = _listView; + ITemplatedItemsView<Cell> templatedItemsView = list; if (list.IsGroupingEnabled) { int leftOver; - list.TemplatedItems.GetGroupIndexFromGlobal(position, out leftOver); + templatedItemsView.TemplatedItems.GetGroupIndexFromGlobal(position, out leftOver); return leftOver > 0; } - if (list.CachingStrategy == ListViewCachingStrategy.RecycleElement) + if (((IListViewController)list).CachingStrategy == ListViewCachingStrategy.RecycleElement) { if (_enabledCheckCell == null) _enabledCheckCell = GetCellForPosition(position); else - list.TemplatedItems.UpdateContent(_enabledCheckCell, position); + templatedItemsView.TemplatedItems.UpdateContent(_enabledCheckCell, position); return _enabledCheckCell.IsEnabled; } @@ -349,8 +358,9 @@ namespace Xamarin.Forms.Platform.Android _realListView.OnItemClickListener = null; _realListView.OnItemLongClickListener = null; - _listView.TemplatedItems.CollectionChanged -= OnCollectionChanged; - _listView.TemplatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; + var templatedItems = TemplatedItemsView.TemplatedItems; + templatedItems.CollectionChanged -= OnCollectionChanged; + templatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; _listView.ItemSelected -= OnItemSelected; if (_lastSelected != null) @@ -372,7 +382,7 @@ namespace Xamarin.Forms.Platform.Android { Cell cell = null; - if (_listView.CachingStrategy == ListViewCachingStrategy.RecycleElement) + if (Controller.CachingStrategy == ListViewCachingStrategy.RecycleElement) { AView cellOwner = view; var layout = cellOwner as ConditionalFocusLayout; @@ -389,7 +399,7 @@ namespace Xamarin.Forms.Platform.Android Select(position, view); _fromNative = true; - _listView.NotifyRowTapped(position, cell); + Controller.NotifyRowTapped(position, cell); } // TODO: We can optimize this by storing the last position, group index and global index @@ -400,14 +410,15 @@ namespace Xamarin.Forms.Platform.Android if (position < 0) return cells; + var templatedItems = TemplatedItemsView.TemplatedItems; if (!_listView.IsGroupingEnabled) { for (var x = 0; x < take; x++) { - if (position + x >= _listView.TemplatedItems.Count) + if (position + x >= templatedItems.Count) return cells; - cells.Add(_listView.TemplatedItems[x + position]); + cells.Add(templatedItems[x + position]); } return cells; @@ -415,9 +426,9 @@ namespace Xamarin.Forms.Platform.Android var i = 0; var global = 0; - for (; i < _listView.TemplatedItems.Count; i++) + for (; i < templatedItems.Count; i++) { - TemplatedItemsList<ItemsView<Cell>, Cell> group = _listView.TemplatedItems.GetGroup(i); + var group = templatedItems.GetGroup(i); if (global == position || cells.Count > 0) { @@ -527,7 +538,7 @@ namespace Xamarin.Forms.Platform.Android void SelectItem(object item) { - int position = _listView.TemplatedItems.GetGlobalIndexOfItem(item); + int position = TemplatedItemsView.TemplatedItems.GetGlobalIndexOfItem(item); AView view = null; if (position != -1) view = _realListView.GetChildAt(position + 1 - _realListView.FirstVisiblePosition); diff --git a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs index 5c69aa45..08bc2f50 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs @@ -5,6 +5,7 @@ using Android.Support.V4.Widget; using Android.Views; using AListView = Android.Widget.ListView; using AView = Android.Views.View; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { @@ -19,6 +20,8 @@ namespace Xamarin.Forms.Platform.Android ScrollToRequestedEventArgs _pendingScrollTo; SwipeRefreshLayout _refresh; + IListViewController Controller => Element; + ITemplatedItemsView<Cell> TemplatedItemsView => Element; public ListViewRenderer() { @@ -64,7 +67,7 @@ namespace Xamarin.Forms.Platform.Android _adapter = null; } - Element.ScrollToRequested -= OnScrollToRequested; + Controller.ScrollToRequested -= OnScrollToRequested; } base.Dispose(disposing); @@ -97,7 +100,7 @@ namespace Xamarin.Forms.Platform.Android if (e.OldElement != null) { - e.OldElement.ScrollToRequested -= OnScrollToRequested; + ((IListViewController)e.OldElement).ScrollToRequested -= OnScrollToRequested; if (_adapter != null) { @@ -124,7 +127,7 @@ namespace Xamarin.Forms.Platform.Android nativeListView.AddFooterView(_footerView, null, false); } - e.NewElement.ScrollToRequested += OnScrollToRequested; + ((IListViewController)e.NewElement).ScrollToRequested += OnScrollToRequested; nativeListView.DividerHeight = 0; nativeListView.Focusable = false; @@ -181,22 +184,24 @@ namespace Xamarin.Forms.Platform.Android Cell cell; int position; + var scrollArgs = (ITemplatedItemsListScrollToRequestedEventArgs)e; + var templatedItems = TemplatedItemsView.TemplatedItems; if (Element.IsGroupingEnabled) { - var results = Element.TemplatedItems.GetGroupAndIndexOfItem(e.Group, e.Item); + var results = templatedItems.GetGroupAndIndexOfItem(scrollArgs.Group, scrollArgs.Item); if (results.Item1 == -1 || results.Item2 == -1) return; - TemplatedItemsList<ItemsView<Cell>, Cell> group = Element.TemplatedItems.GetGroup(results.Item1); + var group = templatedItems.GetGroup(results.Item1); cell = group[results.Item2]; - position = Element.TemplatedItems.GetGlobalIndexForGroup(group) + results.Item2 + 1; + position = templatedItems.GetGlobalIndexForGroup(group) + results.Item2 + 1; } else { - position = Element.TemplatedItems.GetGlobalIndexOfItem(e.Item); - cell = Element.TemplatedItems[position]; + position = templatedItems.GetGlobalIndexOfItem(scrollArgs.Item); + cell = templatedItems[position]; } //Android offsets position of cells when using header @@ -241,7 +246,7 @@ namespace Xamarin.Forms.Platform.Android void UpdateFooter() { - var footer = (VisualElement)((IListViewController)Element).FooterElement; + var footer = (VisualElement)Controller.FooterElement; if (_footerRenderer != null && (footer == null || Registrar.Registered.GetHandlerType(footer.GetType()) != _footerRenderer.GetType())) { _footerView.Child = null; @@ -265,7 +270,7 @@ namespace Xamarin.Forms.Platform.Android void UpdateHeader() { - var header = (VisualElement)((IListViewController)Element).HeaderElement; + var header = (VisualElement)Controller.HeaderElement; if (_headerRenderer != null && (header == null || Registrar.Registered.GetHandlerType(header.GetType()) != _headerRenderer.GetType())) { _headerView.Child = null; diff --git a/Xamarin.Forms.Platform.Android/Renderers/TableViewModelRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/TableViewModelRenderer.cs index ef997d07..2633a776 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/TableViewModelRenderer.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/TableViewModelRenderer.cs @@ -11,6 +11,7 @@ namespace Xamarin.Forms.Platform.Android { readonly TableView _view; protected readonly Context Context; + ITableViewController Controller => _view; Cell _restoreFocus; public TableViewModelRenderer(Context context, AListView listView, TableView view) : base(context) @@ -18,7 +19,7 @@ namespace Xamarin.Forms.Platform.Android _view = view; Context = context; - view.ModelChanged += (sender, args) => NotifyDataSetChanged(); + Controller.ModelChanged += (sender, args) => NotifyDataSetChanged(); listView.OnItemClickListener = this; listView.OnItemLongClickListener = this; @@ -31,9 +32,10 @@ namespace Xamarin.Forms.Platform.Android var count = 0; //Get each adapter's count + 1 for the header - int section = _view.Model.GetSectionCount(); + ITableModel model = Controller.Model; + int section = model.GetSectionCount(); for (var i = 0; i < section; i++) - count += _view.Model.GetRowCount(i) + 1; + count += model.GetRowCount(i) + 1; return count; } @@ -55,11 +57,12 @@ namespace Xamarin.Forms.Platform.Android { //The headers count as a view type too var viewTypeCount = 1; + ITableModel model = Controller.Model; //Get each adapter's ViewTypeCount - int section = _view.Model.GetSectionCount(); + int section = model.GetSectionCount(); for (var i = 0; i < section; i++) - viewTypeCount += _view.Model.GetRowCount(i); + viewTypeCount += model.GetRowCount(i); return viewTypeCount; } @@ -165,17 +168,19 @@ namespace Xamarin.Forms.Platform.Android protected override void HandleItemClick(AdapterView parent, AView nview, int position, long id) { - int sectionCount = _view.Model.GetSectionCount(); + ITableModel model = Controller.Model; + + int sectionCount = model.GetSectionCount(); for (var sectionIndex = 0; sectionIndex < sectionCount; sectionIndex++) { if (position == 0) return; - int size = _view.Model.GetRowCount(sectionIndex) + 1; + int size = model.GetRowCount(sectionIndex) + 1; if (position < size) { - _view.Model.RowSelected(sectionIndex, position - 1); + model.RowSelected(sectionIndex, position - 1); return; } @@ -188,25 +193,26 @@ namespace Xamarin.Forms.Platform.Android isHeader = false; nextIsHeader = false; - int sectionCount = _view.Model.GetSectionCount(); + ITableModel model = Controller.Model; + int sectionCount = model.GetSectionCount(); for (var sectionIndex = 0; sectionIndex < sectionCount; sectionIndex ++) { - int size = _view.Model.GetRowCount(sectionIndex) + 1; + int size = model.GetRowCount(sectionIndex) + 1; if (position == 0) { isHeader = true; nextIsHeader = size == 0 && sectionIndex < sectionCount - 1; - Cell header = _view.Model.GetHeaderCell(sectionIndex); + Cell header = model.GetHeaderCell(sectionIndex); Cell resultCell = null; if (header != null) resultCell = header; if (resultCell == null) - resultCell = new TextCell { Text = _view.Model.GetSectionTitle(sectionIndex) }; + resultCell = new TextCell { Text = model.GetSectionTitle(sectionIndex) }; resultCell.Parent = _view; @@ -216,7 +222,7 @@ namespace Xamarin.Forms.Platform.Android if (position < size) { nextIsHeader = position == size - 1; - return (Cell)_view.Model.GetItem(sectionIndex, position - 1); + return (Cell)model.GetItem(sectionIndex, position - 1); } position -= size; diff --git a/Xamarin.Forms.Platform.Android/Renderers/ToolbarButton.cs b/Xamarin.Forms.Platform.Android/Renderers/ToolbarButton.cs index 74ff08b8..afa87107 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/ToolbarButton.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/ToolbarButton.cs @@ -6,15 +6,16 @@ namespace Xamarin.Forms.Platform.Android { internal sealed class ToolbarButton : global::Android.Widget.Button, IToolbarButton { + IMenuItemController Controller => Item; public ToolbarButton(Context context, ToolbarItem item) : base(context) { if (item == null) throw new ArgumentNullException("item", "you should specify a ToolbarItem"); Item = item; - Enabled = Item.IsEnabled; + Enabled = Controller.IsEnabled; Text = Item.Text; SetBackgroundColor(new Color(0, 0, 0, 0).ToAndroid()); - Click += (sender, e) => Item.Activate(); + Click += (sender, e) => Controller.Activate(); Item.PropertyChanged += HandlePropertyChanged; } @@ -29,8 +30,8 @@ namespace Xamarin.Forms.Platform.Android void HandlePropertyChanged(object sender, PropertyChangedEventArgs e) { - if (e.PropertyName == MenuItem.IsEnabledProperty.PropertyName) - Enabled = Item.IsEnabled; + if (e.PropertyName == Controller.IsEnabledPropertyName) + Enabled = Controller.IsEnabled; } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs b/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs index 6d18db54..b43d36dc 100644 --- a/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs +++ b/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs @@ -8,17 +8,18 @@ namespace Xamarin.Forms.Platform.Android { internal sealed class ToolbarImageButton : ImageButton, IToolbarButton { + IMenuItemController Controller => Item; public ToolbarImageButton(Context context, ToolbarItem item) : base(context) { if (item == null) throw new ArgumentNullException("item", "you should specify a ToolbarItem"); Item = item; - Enabled = item.IsEnabled; + Enabled = Controller.IsEnabled; Bitmap bitmap; bitmap = Context.Resources.GetBitmap(Item.Icon); SetImageBitmap(bitmap); SetBackgroundColor(new Color(0, 0, 0, 0).ToAndroid()); - Click += (sender, e) => item.Activate(); + Click += (sender, e) => Controller.Activate(); bitmap.Dispose(); Item.PropertyChanged += HandlePropertyChanged; } @@ -34,8 +35,8 @@ namespace Xamarin.Forms.Platform.Android void HandlePropertyChanged(object sender, PropertyChangedEventArgs e) { - if (e.PropertyName == MenuItem.IsEnabledProperty.PropertyName) - Enabled = Item.IsEnabled; + if (e.PropertyName == Controller.IsEnabledPropertyName) + Enabled = Controller.IsEnabled; } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs index 7a9f1813..0e6ce0b4 100644 --- a/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs @@ -6,6 +6,7 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Automation; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.UWP { diff --git a/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs b/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs index 26cf2c1f..d5e20847 100644 --- a/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs @@ -6,6 +6,7 @@ using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; using Microsoft.Phone.Controls; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { diff --git a/Xamarin.Forms.Platform.WP8/CellControl.cs b/Xamarin.Forms.Platform.WP8/CellControl.cs index 0f3eb463..92da82a4 100644 --- a/Xamarin.Forms.Platform.WP8/CellControl.cs +++ b/Xamarin.Forms.Platform.WP8/CellControl.cs @@ -3,6 +3,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Media; using Microsoft.Phone.Controls; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { @@ -19,7 +20,7 @@ namespace Xamarin.Forms.Platform.WinPhone { Unloaded += (sender, args) => { - var cell = DataContext as Cell; + var cell = DataContext as ICellController; if (cell != null) cell.SendDisappearing(); }; @@ -56,12 +57,12 @@ namespace Xamarin.Forms.Platform.WinPhone if (oldCell != null) { oldCell.PropertyChanged -= _propertyChangedHandler; - oldCell.SendDisappearing(); + ((ICellController)oldCell).SendDisappearing(); } if (newCell != null) { - newCell.SendAppearing(); + ((ICellController)newCell).SendAppearing(); if (oldCell == null || oldCell.GetType() != newCell.GetType()) ContentTemplate = GetTemplate(newCell); diff --git a/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs b/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs index 09d939fd..42e66fb1 100644 --- a/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs +++ b/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs @@ -1,6 +1,7 @@ using System; using System.Globalization; using System.Windows; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { @@ -29,7 +30,7 @@ namespace Xamarin.Forms.Platform.WinPhone Loaded += (sender, args) => SetBinding(SourceProperty, new System.Windows.Data.Binding()); Unloaded += (sender, args) => { - var cell = DataContext as Cell; + var cell = DataContext as ICellController; if (cell != null) cell.SendDisappearing(); }; @@ -47,8 +48,8 @@ namespace Xamarin.Forms.Platform.WinPhone void SetSource(object oldSource, object newSource) { - var oldCell = oldSource as Cell; - var newCell = newSource as Cell; + var oldCell = oldSource as ICellController; + var newCell = newSource as ICellController; if (oldCell != null) oldCell.SendDisappearing(); diff --git a/Xamarin.Forms.Platform.WP8/CustomContextMenu.cs b/Xamarin.Forms.Platform.WP8/CustomContextMenu.cs index 4946b2b2..faf9cb81 100644 --- a/Xamarin.Forms.Platform.WP8/CustomContextMenu.cs +++ b/Xamarin.Forms.Platform.WP8/CustomContextMenu.cs @@ -19,7 +19,7 @@ namespace Xamarin.Forms.Platform.WinPhone var menuItem = item.DataContext as MenuItem; if (menuItem != null) - menuItem.Activate(); + ((IMenuItemController)menuItem).Activate(); }; return item; } diff --git a/Xamarin.Forms.Platform.WP8/ListViewRenderer.cs b/Xamarin.Forms.Platform.WP8/ListViewRenderer.cs index e505526b..538c529f 100644 --- a/Xamarin.Forms.Platform.WP8/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/ListViewRenderer.cs @@ -11,6 +11,8 @@ using Microsoft.Phone.Controls; using GestureEventArgs = System.Windows.Input.GestureEventArgs; using SLButton = System.Windows.Controls.Button; using SLBinding = System.Windows.Data.Binding; +using System.Collections; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { @@ -192,6 +194,8 @@ namespace Xamarin.Forms.Platform.WinPhone System.Windows.Controls.ProgressBar _progressBar; ViewportControl _viewport; + IListViewController Controller => Element; + ITemplatedItemsView<Cell> TemplatedItemsView => Element; public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) { @@ -224,7 +228,7 @@ namespace Xamarin.Forms.Platform.WinPhone { base.OnElementChanged(e); - Element.ScrollToRequested += OnScrollToRequested; + Controller.ScrollToRequested += OnScrollToRequested; if (Element.SelectedItem != null) _itemNeedsSelecting = true; @@ -232,7 +236,7 @@ namespace Xamarin.Forms.Platform.WinPhone _listBox = new FixedLongListSelector { DataContext = Element, - ItemsSource = Element.TemplatedItems, + ItemsSource = (IList)TemplatedItemsView.TemplatedItems, ItemTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["CellTemplate"], GroupHeaderTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ListViewHeader"], ListHeaderTemplate = (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["View"], @@ -461,18 +465,17 @@ namespace Xamarin.Forms.Platform.WinPhone if (Element.IsGroupingEnabled) { - TemplatedItemsList<ItemsView<Cell>, Cell> til = TemplatedItemsList<ItemsView<Cell>, Cell>.GetGroup(cell); - parentCell = til.HeaderContent; + parentCell = cell.GetGroupHeaderContent<ItemsView<Cell>, Cell>(); } _fromNative = cell.BindingContext; if (Element.IsGroupingEnabled) { - Element.NotifyRowTapped(TemplatedItemsList<ItemsView<Cell>, Cell>.GetIndex(parentCell), TemplatedItemsList<ItemsView<Cell>, Cell>.GetIndex(cell)); + Controller.NotifyRowTapped(parentCell.GetIndex<ItemsView<Cell>, Cell>(), cell.GetIndex<ItemsView<Cell>, Cell>(), null); } else - Element.NotifyRowTapped(TemplatedItemsList<ItemsView<Cell>, Cell>.GetIndex(cell)); + Controller.NotifyRowTapped(cell.GetIndex<ItemsView<Cell>, Cell>(), null); } void OnNativeSelectionChanged(object sender, SelectionChangedEventArgs e) @@ -496,22 +499,22 @@ namespace Xamarin.Forms.Platform.WinPhone void OnPullToRefreshCanceled(object sender, EventArgs args) { - if (Element.IsPullToRefreshEnabled && ((IListViewController)Element).RefreshAllowed) + if (Element.IsPullToRefreshEnabled && Controller.RefreshAllowed) _progressBar.Visibility = Visibility.Collapsed; } void OnPullToRefreshCompleted(object sender, EventArgs args) { - if (Element.IsPullToRefreshEnabled && ((IListViewController)Element).RefreshAllowed) + if (Element.IsPullToRefreshEnabled && Controller.RefreshAllowed) { _progressBar.IsIndeterminate = true; - ((IListViewController)Element).SendRefreshing(); + Controller.SendRefreshing(); } } void OnPullToRefreshStarted(object sender, EventArgs args) { - if (Element.IsPullToRefreshEnabled && ((IListViewController)Element).RefreshAllowed) + if (Element.IsPullToRefreshEnabled && Controller.RefreshAllowed) { _progressBar.Visibility = Visibility.Visible; _progressBar.IsIndeterminate = false; @@ -521,7 +524,7 @@ namespace Xamarin.Forms.Platform.WinPhone void OnPullToRefreshStatusUpdated(object sender, EventArgs eventArgs) { - if (Element.IsPullToRefreshEnabled && ((IListViewController)Element).RefreshAllowed) + if (Element.IsPullToRefreshEnabled && Controller.RefreshAllowed) _progressBar.Value = Math.Max(0, Math.Min(1, _listBox.PullToRefreshStatus)); } @@ -567,28 +570,30 @@ namespace Xamarin.Forms.Platform.WinPhone double targetHeaderHeight = 0; var templateReusables = new Dictionary<System.Windows.DataTemplate, FrameworkElement>(); + var templatedItems = TemplatedItemsView.TemplatedItems; + var scrollArgs = (ITemplatedItemsListScrollToRequestedEventArgs)e; var found = false; if (Element.IsGroupingEnabled) { - for (var g = 0; g < Element.TemplatedItems.Count; g++) + for (var g = 0; g < templatedItems.Count; g++) { if (found) break; - TemplatedItemsList<ItemsView<Cell>, Cell> til = Element.TemplatedItems.GetGroup(g); + var til = templatedItems.GetGroup(g); double headerHeight = GetHeight(templateReusables, Control.GroupHeaderTemplate, til); y += headerHeight; for (var i = 0; i < til.Count; i++) { - Cell cell = til[i]; + Cell cell = til[i] as Cell; double contentHeight = GetHeight(templateReusables, Control.ItemTemplate, cell); - if ((ReferenceEquals(til.BindingContext, e.Group) || e.Group == null) && ReferenceEquals(cell.BindingContext, e.Item)) + if ((ReferenceEquals(til.BindingContext, scrollArgs.Group) || scrollArgs.Group == null) && ReferenceEquals(cell.BindingContext, scrollArgs.Item)) { targetHeaderHeight = headerHeight; targetHeight = contentHeight; @@ -602,13 +607,13 @@ namespace Xamarin.Forms.Platform.WinPhone } else { - for (var i = 0; i < Element.TemplatedItems.Count; i++) + for (var i = 0; i < templatedItems.Count; i++) { - Cell cell = Element.TemplatedItems[i]; + Cell cell = templatedItems[i] as Cell; double height = GetHeight(templateReusables, Control.ItemTemplate, cell); - if (ReferenceEquals(cell.BindingContext, e.Item)) + if (ReferenceEquals(cell.BindingContext, scrollArgs.Item)) { found = true; targetHeight = height; @@ -683,12 +688,12 @@ namespace Xamarin.Forms.Platform.WinPhone void UpdateFooter() { - Control.ListFooter = ((IListViewController)Element).FooterElement; + Control.ListFooter = Controller.FooterElement; } void UpdateHeader() { - Control.ListHeader = ((IListViewController)Element).HeaderElement; + Control.ListHeader = Controller.HeaderElement; } void UpdateIsRefreshing() @@ -701,7 +706,7 @@ namespace Xamarin.Forms.Platform.WinPhone else { _progressBar.IsIndeterminate = false; - _progressBar.Visibility = _listBox.IsInPullToRefresh && Element.IsPullToRefreshEnabled && ((IListViewController)Element).RefreshAllowed ? Visibility.Visible : Visibility.Collapsed; + _progressBar.Visibility = _listBox.IsInPullToRefresh && Element.IsPullToRefreshEnabled && Controller.RefreshAllowed ? Visibility.Visible : Visibility.Collapsed; } } diff --git a/Xamarin.Forms.Platform.WP8/Platform.cs b/Xamarin.Forms.Platform.WP8/Platform.cs index 00623b4d..be71df09 100644 --- a/Xamarin.Forms.Platform.WP8/Platform.cs +++ b/Xamarin.Forms.Platform.WP8/Platform.cs @@ -7,6 +7,7 @@ using System.Windows; using System.Windows.Controls; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { @@ -536,6 +537,7 @@ namespace Xamarin.Forms.Platform.WinPhone var buttonsToAdd = new List<TaggedAppBarButton>(); foreach (ToolbarItem item in items.Where(i => i.Order != ToolbarItemOrder.Secondary)) { + IMenuItemController controller = item; if (_page.ApplicationBar.Buttons.OfType<TaggedAppBarButton>().Any(b => b.Tag == item)) continue; @@ -543,10 +545,10 @@ namespace Xamarin.Forms.Platform.WinPhone { IconUri = new Uri(item.Icon ?? "ApplicationIcon.jpg", UriKind.Relative), Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "ApplicationIcon.jpg", - IsEnabled = item.IsEnabled, + IsEnabled = controller.IsEnabled, Tag = item }; - button.Click += (sender, args) => item.Activate(); + button.Click += (sender, args) => controller.Activate(); buttonsToAdd.Add(button); } @@ -557,7 +559,7 @@ namespace Xamarin.Forms.Platform.WinPhone continue; var button = new TaggedAppBarMenuItem { Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "MenuItem", IsEnabled = true, Tag = item }; - button.Click += (sender, args) => item.Activate(); + button.Click += (sender, args) => ((IMenuItemController)item).Activate(); menuItemsToAdd.Add(button); } @@ -565,7 +567,7 @@ namespace Xamarin.Forms.Platform.WinPhone TaggedAppBarMenuItem[] deadMenuItems = _page.ApplicationBar.MenuItems.OfType<TaggedAppBarMenuItem>().Where(b => b.Tag is ToolbarItem && !items.Contains(b.Tag)).ToArray(); - // we must remove the dead buttons before adding the new ones so we dont accidentally go over the limit during the tranistion + // we must remove the dead buttons before adding the new ones so we don't accidentally go over the limit during the transition foreach (TaggedAppBarButton deadButton in deadButtons) { deadButton.Dispose(); @@ -623,8 +625,10 @@ namespace Xamarin.Forms.Platform.WinPhone if (item == null) return; - if (e.PropertyName == MenuItem.IsEnabledProperty.PropertyName) - IsEnabled = item.IsEnabled; + IMenuItemController controller = item; + + if (e.PropertyName == controller.IsEnabledPropertyName) + IsEnabled = controller.IsEnabled; else if (e.PropertyName == MenuItem.TextProperty.PropertyName) Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "ApplicationIcon.jpg"; else if (e.PropertyName == MenuItem.IconProperty.PropertyName) diff --git a/Xamarin.Forms.Platform.WP8/TableViewRenderer.cs b/Xamarin.Forms.Platform.WP8/TableViewRenderer.cs index 84f205eb..4c685613 100644 --- a/Xamarin.Forms.Platform.WP8/TableViewRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/TableViewRenderer.cs @@ -11,6 +11,7 @@ namespace Xamarin.Forms.Platform.WinPhone public class TableViewRenderer : ViewRenderer<Xamarin.Forms.TableView, TableView> { TableView _view; + ITableViewController Controller => Element; public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) { @@ -23,7 +24,7 @@ namespace Xamarin.Forms.Platform.WinPhone { base.OnElementChanged(e); - Element.ModelChanged += OnModelChanged; + Controller.ModelChanged += OnModelChanged; _view = new TableView { DataContext = Element.Root }; _view.Tap += OnTapTable; @@ -71,7 +72,7 @@ namespace Xamarin.Forms.Platform.WinPhone if (!FindIndices(e, out sectionIndex, out cellIndex)) return; - Element.Model.RowLongPressed(sectionIndex, cellIndex); + Controller.Model.RowLongPressed(sectionIndex, cellIndex); } void OnModelChanged(object sender, EventArgs eventArgs) @@ -85,7 +86,7 @@ namespace Xamarin.Forms.Platform.WinPhone if (!FindIndices(e, out sectionIndex, out cellIndex)) return; - Element.Model.RowSelected(sectionIndex, cellIndex); + Controller.Model.RowSelected(sectionIndex, cellIndex); } } }
\ No newline at end of file diff --git a/Xamarin.Forms.Platform.WP8/TextCellRenderer.cs b/Xamarin.Forms.Platform.WP8/TextCellRenderer.cs index 56a9a389..3845ae4e 100644 --- a/Xamarin.Forms.Platform.WP8/TextCellRenderer.cs +++ b/Xamarin.Forms.Platform.WP8/TextCellRenderer.cs @@ -1,6 +1,7 @@ using System; using System.Windows.Input; using Microsoft.Phone.Controls; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinPhone { @@ -10,7 +11,7 @@ namespace Xamarin.Forms.Platform.WinPhone { if (cell.RealParent is ListView) { - if (TemplatedItemsList<ItemsView<Cell>, Cell>.GetIsGroupHeader(cell)) + if (cell.GetIsGroupHeader<ItemsView<Cell>, Cell>()) return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ListViewHeaderTextCell"]; return (System.Windows.DataTemplate)System.Windows.Application.Current.Resources["ListViewTextCell"]; @@ -31,7 +32,7 @@ namespace Xamarin.Forms.Platform.WinPhone public void Execute(object parameter) { - var entryCell = (EntryCell)parameter; + var entryCell = (IEntryCellController)parameter; entryCell.SendCompleted(); } diff --git a/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs index fa0e6c22..68cafae3 100644 --- a/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs @@ -5,6 +5,7 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Automation; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinRT { diff --git a/Xamarin.Forms.Platform.WinRT.Tablet/TabbedPageRenderer.cs b/Xamarin.Forms.Platform.WinRT.Tablet/TabbedPageRenderer.cs index e89e18c1..bcdbe56d 100644 --- a/Xamarin.Forms.Platform.WinRT.Tablet/TabbedPageRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT.Tablet/TabbedPageRenderer.cs @@ -5,6 +5,7 @@ using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Animation; +using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.WinRT { diff --git a/Xamarin.Forms.Platform.WinRT/CarouselPageRenderer.cs b/Xamarin.Forms.Platform.WinRT/CarouselPageRenderer.cs index 7fe0ba02..11f4e09d 100644 --- a/Xamarin.Forms.Platform.WinRT/CarouselPageRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/CarouselPageRenderer.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using Windows.UI.Xaml; using Windows.UI.Xaml.Automation; using Windows.UI.Xaml.Controls; +using Xamarin.Forms.Internals; #if WINDOWS_UWP diff --git a/Xamarin.Forms.Platform.WinRT/CellControl.cs b/Xamarin.Forms.Platform.WinRT/CellControl.cs index a47c9646..31f29902 100644 --- a/Xamarin.Forms.Platform.WinRT/CellControl.cs +++ b/Xamarin.Forms.Platform.WinRT/CellControl.cs @@ -8,6 +8,7 @@ using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; +using Xamarin.Forms.Internals; #if WINDOWS_UWP @@ -41,7 +42,7 @@ namespace Xamarin.Forms.Platform.WinRT Unloaded += (sender, args) => { - Cell cell = Cell; + ICellController cell = Cell; if (cell != null) cell.SendDisappearing(); }; @@ -110,28 +111,6 @@ namespace Xamarin.Forms.Platform.WinRT return result; } - static string GetDisplayTextFromGroup(ListView lv, TemplatedItemsList<ItemsView<Cell>, Cell> group) - { - string displayBinding = null; - - if (lv.GroupDisplayBinding != null) - displayBinding = group.Name; - - if (lv.GroupShortNameBinding != null) - displayBinding = group.ShortName; - - // TODO: what if they set both? should it default to the ShortName, like it will here? - // ShortNames binding did not appear to be functional before. - return displayBinding; - } - - static TemplatedItemsList<ItemsView<Cell>, Cell> GetGroup(object newContext, ListView lv) - { - int groupIndex = lv.TemplatedItems.GetGlobalIndexOfGroup(newContext); - TemplatedItemsList<ItemsView<Cell>, Cell> group = lv.TemplatedItems.GetGroup(groupIndex); - return group; - } - ListView GetListView() { DependencyObject parent = VisualTreeHelper.GetParent(this); @@ -251,13 +230,12 @@ namespace Xamarin.Forms.Platform.WinRT { string textContent = newContext.ToString(); + IListViewController listViewController = lv; + if (isGroupHeader) - { - TemplatedItemsList<ItemsView<Cell>, Cell> group = GetGroup(newContext, lv); - textContent = GetDisplayTextFromGroup(lv, group); - } + textContent = listViewController.GetDisplayTextFromGroup(newContext); - cell = lv.CreateDefaultCell(textContent); + cell = listViewController.CreateDefaultCell(textContent); } // A TableView cell should already have its parent, @@ -266,7 +244,7 @@ namespace Xamarin.Forms.Platform.WinRT // This provides the Group Header styling (e.g., larger font, etc.) when the // template is loaded later. - TemplatedItemsList<ItemsView<Cell>, Cell>.SetIsGroupHeader(cell, isGroupHeader); + cell.SetIsGroupHeader<ItemsView<Cell>, Cell>(isGroupHeader); } Cell = cell; @@ -277,12 +255,12 @@ namespace Xamarin.Forms.Platform.WinRT if (oldCell != null) { oldCell.PropertyChanged -= _propertyChangedHandler; - oldCell.SendDisappearing(); + ((ICellController)oldCell).SendDisappearing(); } if (newCell != null) { - newCell.SendAppearing(); + ((ICellController)newCell).SendAppearing(); UpdateContent(newCell); SetupContextMenu(); diff --git a/Xamarin.Forms.Platform.WinRT/EntryCellTextBox.cs b/Xamarin.Forms.Platform.WinRT/EntryCellTextBox.cs index e280e18a..dd99e7e0 100644 --- a/Xamarin.Forms.Platform.WinRT/EntryCellTextBox.cs +++ b/Xamarin.Forms.Platform.WinRT/EntryCellTextBox.cs @@ -16,7 +16,7 @@ namespace Xamarin.Forms.Platform.WinRT { if (e.Key == VirtualKey.Enter) { - var cell = DataContext as EntryCell; + var cell = DataContext as IEntryCellController; if (cell != null) { cell.SendCompleted(); diff --git a/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs b/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs index d47299a4..c6a9d2db 100644 --- a/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs @@ -12,6 +12,7 @@ using Windows.UI.Xaml.Media; using WListView = Windows.UI.Xaml.Controls.ListView; using WBinding = Windows.UI.Xaml.Data.Binding; using WApp = Windows.UI.Xaml.Application; +using Xamarin.Forms.Internals; #if WINDOWS_UWP @@ -23,6 +24,10 @@ namespace Xamarin.Forms.Platform.WinRT { public class ListViewRenderer : ViewRenderer<ListView, FrameworkElement> { + IListViewController Controller => Element; + ITemplatedItemsView<Cell> TemplatedItemsView => Element; + + #if !WINDOWS_UWP public static readonly DependencyProperty HighlightWhenSelectedProperty = DependencyProperty.RegisterAttached("HighlightWhenSelected", typeof(bool), typeof(ListViewRenderer), new PropertyMetadata(false)); @@ -47,18 +52,17 @@ namespace Xamarin.Forms.Platform.WinRT if (e.OldElement != null) { e.OldElement.ItemSelected -= OnElementItemSelected; - e.OldElement.ScrollToRequested -= OnElementScrollToRequested; + ((IListViewController)e.OldElement).ScrollToRequested -= OnElementScrollToRequested; } if (e.NewElement != null) { e.NewElement.ItemSelected += OnElementItemSelected; - e.NewElement.ScrollToRequested += OnElementScrollToRequested; + ((IListViewController)e.NewElement).ScrollToRequested += OnElementScrollToRequested; if (List == null) { - List = new WListView - { + List = new WListView { IsSynchronizedWithCurrentItem = false, ItemTemplate = (Windows.UI.Xaml.DataTemplate)WApp.Current.Resources["CellTemplate"], HeaderTemplate = (Windows.UI.Xaml.DataTemplate)WApp.Current.Resources["View"], @@ -214,12 +218,12 @@ namespace Xamarin.Forms.Platform.WinRT void UpdateFooter() { - List.Footer = ((IListViewController)Element).FooterElement; + List.Footer = Controller.FooterElement; } void UpdateHeader() { - List.Header = ((IListViewController)Element).HeaderElement; + List.Header = Controller.HeaderElement; } void UpdateGrouping() @@ -228,13 +232,14 @@ namespace Xamarin.Forms.Platform.WinRT ((CollectionViewSource)List.DataContext).IsSourceGrouped = grouping; - if (grouping && Element.TemplatedItems.ShortNames != null) + var templatedItems = TemplatedItemsView.TemplatedItems; + if (grouping && templatedItems.ShortNames != null) { if (_zoom == null) { ScrollViewer.SetIsVerticalScrollChainingEnabled(List, false); - var grid = new GridView { ItemsSource = Element.TemplatedItems.ShortNames, Style = (Windows.UI.Xaml.Style)WApp.Current.Resources["JumpListGrid"] }; + var grid = new GridView { ItemsSource = templatedItems.ShortNames, Style = (Windows.UI.Xaml.Style)WApp.Current.Resources["JumpListGrid"] }; ScrollViewer.SetIsHorizontalScrollChainingEnabled(grid, false); @@ -269,11 +274,12 @@ namespace Xamarin.Forms.Platform.WinRT // HACK: Technically more than one short name could be the same, this will potentially find the wrong one in that case var item = (string)e.SourceItem.Item; - int index = Element.TemplatedItems.ShortNames.IndexOf(item); + var templatedItems = TemplatedItemsView.TemplatedItems; + int index = templatedItems.ShortNames.IndexOf(item); if (index == -1) return; - TemplatedItemsList<ItemsView<Cell>, Cell> til = Element.TemplatedItems.GetGroup(index); + var til = templatedItems.GetGroup(index); if (til.Count == 0) return; // FIXME @@ -281,7 +287,8 @@ namespace Xamarin.Forms.Platform.WinRT if (Device.Idiom == TargetIdiom.Phone) await Task.Delay(1); - ScrollTo(til.ListProxy.ProxiedEnumerable, til.ListProxy[0], ScrollToPosition.Start, true, true); + IListProxy listProxy = ((ITemplatedItemsView<Cell>)til).ListProxy; + ScrollTo(listProxy.ProxiedEnumerable, listProxy[0], ScrollToPosition.Start, true, true); } #pragma warning disable 1998 // considered for removal @@ -302,12 +309,12 @@ namespace Xamarin.Forms.Platform.WinRT List.Loaded += loadedHandler; return; } - - Tuple<int, int> location = Element.TemplatedItems.GetGroupAndIndexOfItem(group, item); + var templatedItems = TemplatedItemsView.TemplatedItems; + Tuple<int, int> location = templatedItems.GetGroupAndIndexOfItem(group, item); if (location.Item1 == -1 || location.Item2 == -1) return; - object[] t = Element.TemplatedItems.GetGroup(location.Item1).ItemsSource.Cast<object>().ToArray(); + object[] t = templatedItems.GetGroup(location.Item1).ItemsSource.Cast<object>().ToArray(); object c = t[location.Item2]; double viewportHeight = viewer.ViewportHeight; @@ -317,33 +324,33 @@ namespace Xamarin.Forms.Platform.WinRT switch (toPosition) { case ScrollToPosition.Start: - { - List.ScrollIntoView(c, ScrollIntoViewAlignment.Leading); - return; - } + { + List.ScrollIntoView(c, ScrollIntoViewAlignment.Leading); + return; + } case ScrollToPosition.MakeVisible: - { - List.ScrollIntoView(c, ScrollIntoViewAlignment.Default); - return; - } + { + List.ScrollIntoView(c, ScrollIntoViewAlignment.Default); + return; + } case ScrollToPosition.End: case ScrollToPosition.Center: - { - var content = (FrameworkElement)List.ItemTemplate.LoadContent(); - content.DataContext = c; - content.Measure(new Windows.Foundation.Size(viewer.ActualWidth, double.PositiveInfinity)); + { + var content = (FrameworkElement)List.ItemTemplate.LoadContent(); + content.DataContext = c; + content.Measure(new Windows.Foundation.Size(viewer.ActualWidth, double.PositiveInfinity)); - double tHeight = content.DesiredSize.Height; + double tHeight = content.DesiredSize.Height; - if (toPosition == ScrollToPosition.Center) - semanticLocation.Bounds = new Rect(0, viewportHeight / 2 - tHeight / 2, 0, 0); - else - semanticLocation.Bounds = new Rect(0, viewportHeight - tHeight, 0, 0); + if (toPosition == ScrollToPosition.Center) + semanticLocation.Bounds = new Rect(0, viewportHeight / 2 - tHeight / 2, 0, 0); + else + semanticLocation.Bounds = new Rect(0, viewportHeight - tHeight, 0, 0); - break; - } + break; + } } // Waiting for loaded doesn't seem to be enough anymore; the ScrollViewer does not appear until after Loaded. @@ -365,7 +372,8 @@ namespace Xamarin.Forms.Platform.WinRT void OnElementScrollToRequested(object sender, ScrollToRequestedEventArgs e) { - ScrollTo(e.Group, e.Item, e.Position, e.ShouldAnimate); + var scrollArgs = (ITemplatedItemsListScrollToRequestedEventArgs)e; + ScrollTo(scrollArgs.Group, scrollArgs.Item, e.Position, e.ShouldAnimate); } T GetFirstDescendant<T>(DependencyObject element) where T : FrameworkElement @@ -428,19 +436,19 @@ namespace Xamarin.Forms.Platform.WinRT List.SelectedIndex = -1; return; } - + var templatedItems = TemplatedItemsView.TemplatedItems; var index = 0; if (Element.IsGroupingEnabled) { - int selectedItemIndex = Element.TemplatedItems.GetGlobalIndexOfItem(e.SelectedItem); + int selectedItemIndex = templatedItems.GetGlobalIndexOfItem(e.SelectedItem); var leftOver = 0; - int groupIndex = Element.TemplatedItems.GetGroupIndexFromGlobal(selectedItemIndex, out leftOver); + int groupIndex = templatedItems.GetGroupIndexFromGlobal(selectedItemIndex, out leftOver); index = selectedItemIndex - (groupIndex + 1); } else { - index = Element.TemplatedItems.GetGlobalIndexOfItem(e.SelectedItem); + index = templatedItems.GetGlobalIndexOfItem(e.SelectedItem); } List.SelectedIndex = index; @@ -459,7 +467,7 @@ namespace Xamarin.Forms.Platform.WinRT if (lv != null) { - index = Element.TemplatedItems.GetGlobalIndexOfItem(lv.Content); + index = TemplatedItemsView.TemplatedItems.GetGlobalIndexOfItem(lv.Content); break; } @@ -488,7 +496,7 @@ namespace Xamarin.Forms.Platform.WinRT } #endif - Element.NotifyRowTapped(index); + Controller.NotifyRowTapped(index, cell: null); #if !WINDOWS_UWP diff --git a/Xamarin.Forms.Platform.WinRT/MenuItemCommand.cs b/Xamarin.Forms.Platform.WinRT/MenuItemCommand.cs index 31574b44..6f65f315 100644 --- a/Xamarin.Forms.Platform.WinRT/MenuItemCommand.cs +++ b/Xamarin.Forms.Platform.WinRT/MenuItemCommand.cs @@ -13,6 +13,7 @@ namespace Xamarin.Forms.Platform.WinRT internal class MenuItemCommand : ICommand { readonly MenuItem _menuItem; + IMenuItemController Controller => _menuItem; public MenuItemCommand(MenuItem item) { @@ -22,14 +23,14 @@ namespace Xamarin.Forms.Platform.WinRT public virtual bool CanExecute(object parameter) { - return _menuItem.IsEnabled; + return Controller.IsEnabled; } public event EventHandler CanExecuteChanged; public void Execute(object parameter) { - _menuItem.Activate(); + Controller.Activate(); } void OnCanExecuteChanged() diff --git a/Xamarin.Forms.Platform.WinRT/Platform.cs b/Xamarin.Forms.Platform.WinRT/Platform.cs index 268806ad..99e51e42 100644 --- a/Xamarin.Forms.Platform.WinRT/Platform.cs +++ b/Xamarin.Forms.Platform.WinRT/Platform.cs @@ -11,6 +11,7 @@ using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Animation; +using Xamarin.Forms.Internals; #if WINDOWS_UWP using Windows.Foundation; diff --git a/Xamarin.Forms.Platform.WinRT/TableViewRenderer.cs b/Xamarin.Forms.Platform.WinRT/TableViewRenderer.cs index c5750c79..6ae92a7c 100644 --- a/Xamarin.Forms.Platform.WinRT/TableViewRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/TableViewRenderer.cs @@ -13,6 +13,7 @@ namespace Xamarin.Forms.Platform.WinRT public class TableViewRenderer : ViewRenderer<TableView, Windows.UI.Xaml.Controls.ListView> { bool _ignoreSelectionEvent; + ITableViewController Controller => Element; public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) { @@ -25,7 +26,7 @@ namespace Xamarin.Forms.Platform.WinRT { if (e.OldElement != null) { - e.OldElement.ModelChanged -= OnModelChanged; + ((ITableViewController)e.OldElement).ModelChanged -= OnModelChanged; } if (e.NewElement != null) @@ -46,7 +47,7 @@ namespace Xamarin.Forms.Platform.WinRT Control.SelectionChanged += OnSelectionChanged; } - e.NewElement.ModelChanged += OnModelChanged; + ((ITableViewController)e.NewElement).ModelChanged += OnModelChanged; OnModelChanged(e.NewElement, EventArgs.Empty); } @@ -73,7 +74,7 @@ namespace Xamarin.Forms.Platform.WinRT var cell = item as Cell; if (cell != null) { - Element.Model.RowSelected(cell); + Controller.Model.RowSelected(cell); break; } } diff --git a/Xamarin.Forms.Platform.WinRT/TextCellRenderer.cs b/Xamarin.Forms.Platform.WinRT/TextCellRenderer.cs index 4d04a5ee..77f31600 100644 --- a/Xamarin.Forms.Platform.WinRT/TextCellRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/TextCellRenderer.cs @@ -2,6 +2,7 @@ using System.Windows.Input; using WDataTemplate = Windows.UI.Xaml.DataTemplate; using WApplication = Windows.UI.Xaml.Application; +using Xamarin.Forms.Internals; #if WINDOWS_UWP @@ -17,7 +18,7 @@ namespace Xamarin.Forms.Platform.WinRT { if (cell.RealParent is ListView) { - if (TemplatedItemsList<ItemsView<Cell>, Cell>.GetIsGroupHeader(cell)) + if (cell.GetIsGroupHeader<ItemsView<Cell>, Cell>()) return (WDataTemplate)WApplication.Current.Resources["ListViewHeaderTextCell"]; //return (WDataTemplate) WApplication.Current.Resources["ListViewTextCell"]; @@ -40,7 +41,7 @@ namespace Xamarin.Forms.Platform.WinRT public void Execute(object parameter) { - var entryCell = (EntryCell)parameter; + var entryCell = (IEntryCellController)parameter; entryCell.SendCompleted(); } } diff --git a/Xamarin.Forms.Platform.iOS/Cells/CellRenderer.cs b/Xamarin.Forms.Platform.iOS/Cells/CellRenderer.cs index c01a7774..3ec12bd8 100644 --- a/Xamarin.Forms.Platform.iOS/Cells/CellRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Cells/CellRenderer.cs @@ -1,4 +1,5 @@ using System; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; using Foundation; @@ -32,7 +33,7 @@ namespace Xamarin.Forms.Platform.iOS protected void UpdateBackground(UITableViewCell tableViewCell, Cell cell) { - if (TemplatedItemsList<ItemsView<Cell>, Cell>.GetIsGroupHeader(cell)) + if (cell.GetIsGroupHeader<ItemsView<Cell>, Cell>()) { if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0)) tableViewCell.BackgroundColor = new UIColor(247f / 255f, 247f / 255f, 247f / 255f, 1); @@ -50,11 +51,11 @@ namespace Xamarin.Forms.Platform.iOS } } - protected void WireUpForceUpdateSizeRequested(Cell cell, UITableViewCell nativeCell, UITableView tableView) + protected void WireUpForceUpdateSizeRequested(ICellController cell, UITableViewCell nativeCell, UITableView tableView) { cell.ForceUpdateSizeRequested -= _onForceUpdateSizeRequested; - _onForceUpdateSizeRequested = delegate + _onForceUpdateSizeRequested = (sender, e) => { var index = tableView.IndexPathForCell(nativeCell); if (index != null) diff --git a/Xamarin.Forms.Platform.iOS/Cells/CellTableViewCell.cs b/Xamarin.Forms.Platform.iOS/Cells/CellTableViewCell.cs index a9265868..f1a53917 100644 --- a/Xamarin.Forms.Platform.iOS/Cells/CellTableViewCell.cs +++ b/Xamarin.Forms.Platform.iOS/Cells/CellTableViewCell.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; @@ -27,11 +28,16 @@ namespace Xamarin.Forms.Platform.iOS if (_cell == value) return; - if (_cell != null) - Device.BeginInvokeOnMainThread(_cell.SendDisappearing); + ICellController cellController = _cell; + + if (cellController != null) + Device.BeginInvokeOnMainThread(cellController.SendDisappearing); + _cell = value; - if (_cell != null) - Device.BeginInvokeOnMainThread(_cell.SendAppearing); + cellController = value; + + if (cellController != null) + Device.BeginInvokeOnMainThread(cellController.SendAppearing); } } diff --git a/Xamarin.Forms.Platform.iOS/Cells/EntryCellRenderer.cs b/Xamarin.Forms.Platform.iOS/Cells/EntryCellRenderer.cs index 1af49b4a..e94e0ea5 100644 --- a/Xamarin.Forms.Platform.iOS/Cells/EntryCellRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Cells/EntryCellRenderer.cs @@ -82,7 +82,7 @@ namespace Xamarin.Forms.Platform.iOS static void OnKeyBoardDoneButtonPressed(object sender, EventArgs e) { var cell = (EntryCellTableViewCell)sender; - var model = (EntryCell)cell.Cell; + var model = (IEntryCellController)cell.Cell; model.SendCompleted(); } diff --git a/Xamarin.Forms.Platform.iOS/Cells/ImageCellRenderer.cs b/Xamarin.Forms.Platform.iOS/Cells/ImageCellRenderer.cs index ade59e82..010319ba 100644 --- a/Xamarin.Forms.Platform.iOS/Cells/ImageCellRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Cells/ImageCellRenderer.cs @@ -1,5 +1,6 @@ using System.ComponentModel; using System.Threading.Tasks; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; using Foundation; diff --git a/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs b/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs index 9493c8fb..f1cb2fb6 100644 --- a/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel; -using System.Diagnostics; +using Xamarin.Forms.Internals; + #if __UNIFIED__ using UIKit; #else @@ -145,11 +146,14 @@ namespace Xamarin.Forms.Platform.iOS void UpdateCell(ViewCell cell) { - if (_viewCell != null) - Device.BeginInvokeOnMainThread(_viewCell.SendDisappearing); + ICellController cellController = _viewCell; + if (cellController != null) + Device.BeginInvokeOnMainThread(cellController.SendDisappearing); _viewCell = cell; - Device.BeginInvokeOnMainThread(_viewCell.SendAppearing); + cellController = cell; + + Device.BeginInvokeOnMainThread(cellController.SendAppearing); IVisualElementRenderer renderer; if (_rendererRef == null || !_rendererRef.TryGetTarget(out renderer)) diff --git a/Xamarin.Forms.Platform.iOS/ContextActionCell.cs b/Xamarin.Forms.Platform.iOS/ContextActionCell.cs index a2409c62..5d50d31d 100644 --- a/Xamarin.Forms.Platform.iOS/ContextActionCell.cs +++ b/Xamarin.Forms.Platform.iOS/ContextActionCell.cs @@ -131,7 +131,7 @@ namespace Xamarin.Forms.Platform.iOS public void Update(UITableView tableView, Cell cell, UITableViewCell nativeCell) { - var parentListView = cell.RealParent as ListView; + var parentListView = cell.RealParent as IListViewController; var recycling = parentListView != null && parentListView.CachingStrategy == ListViewCachingStrategy.RecycleElement; if (_cell != cell && recycling) { @@ -342,7 +342,7 @@ namespace Xamarin.Forms.Platform.iOS _scroller.SetContentOffset(new PointF(0, 0), true); MenuItem mi; if (weakItem.TryGetTarget(out mi)) - mi.Activate(); + ((IMenuItemController)mi).Activate(); }); actionSheet.AddAction(action); } @@ -419,7 +419,7 @@ namespace Xamarin.Forms.Platform.iOS button.SetTitle(item.Text, UIControlState.Normal); button.TitleEdgeInsets = new UIEdgeInsets(0, 15, 0, 15); - button.Enabled = item.IsEnabled; + button.Enabled = ((IMenuItemController)item).IsEnabled; return button; } @@ -460,7 +460,7 @@ namespace Xamarin.Forms.Platform.iOS else { _scroller.SetContentOffset(new PointF(0, 0), true); - _cell.ContextActions[(int)button.Tag].Activate(); + ((IMenuItemController)_cell.ContextActions[(int)button.Tag]).Activate(); } } @@ -468,7 +468,7 @@ namespace Xamarin.Forms.Platform.iOS { if (e.PropertyName == "HasContextActions") { - var parentListView = _cell.RealParent as ListView; + var parentListView = _cell.RealParent as IListViewController; var recycling = parentListView != null && parentListView.CachingStrategy == ListViewCachingStrategy.RecycleElement; if (!recycling) ReloadRow(); @@ -477,7 +477,7 @@ namespace Xamarin.Forms.Platform.iOS void OnContextItemsChanged(object sender, NotifyCollectionChangedEventArgs e) { - var parentListView = _cell.RealParent as ListView; + var parentListView = _cell.RealParent as IListViewController; var recycling = parentListView != null && parentListView.CachingStrategy == ListViewCachingStrategy.RecycleElement; if (recycling) Update(_tableView, _cell, ContentCell); @@ -488,7 +488,7 @@ namespace Xamarin.Forms.Platform.iOS void OnMenuItemPropertyChanged(object sender, PropertyChangedEventArgs e) { - var parentListView = _cell.RealParent as ListView; + var parentListView = _cell.RealParent as IListViewController; var recycling = parentListView != null && parentListView.CachingStrategy == ListViewCachingStrategy.RecycleElement; if (recycling) Update(_tableView, _cell, ContentCell); @@ -708,7 +708,7 @@ namespace Xamarin.Forms.Platform.iOS // do not activate a -1 index when dismissing by clicking outside the popover if (buttonIndex >= 0) - Items[(int)buttonIndex].Activate(); + ((IMenuItemController)Items[(int)buttonIndex]).Activate(); } } } diff --git a/Xamarin.Forms.Platform.iOS/Extensions/CellExtensions.cs b/Xamarin.Forms.Platform.iOS/Extensions/CellExtensions.cs index ca05bc54..7243456b 100644 --- a/Xamarin.Forms.Platform.iOS/Extensions/CellExtensions.cs +++ b/Xamarin.Forms.Platform.iOS/Extensions/CellExtensions.cs @@ -1,4 +1,5 @@ using System; +using Xamarin.Forms.Internals; #if __UNIFIED__ using Foundation; @@ -20,16 +21,16 @@ namespace Xamarin.Forms.Platform.iOS if (self.RealParent is ListView) { var section = 0; - var til = TemplatedItemsList<ItemsView<Cell>, Cell>.GetGroup(self); + var til = self.GetGroup<ItemsView<Cell>, Cell>(); if (til != null) - section = TemplatedItemsList<ItemsView<Cell>, Cell>.GetIndex(til.HeaderContent); + section = til.HeaderContent.GetIndex<ItemsView<Cell>, Cell>(); - var row = TemplatedItemsList<ItemsView<Cell>, Cell>.GetIndex(self); + var row = self.GetIndex<ItemsView<Cell>, Cell>(); path = NSIndexPath.FromRowSection(row, section); } else if (self.RealParent is TableView) { - var tmPath = TableView.TableSectionModel.GetPath(self); + var tmPath = self.GetPath(); path = NSIndexPath.FromRowSection(tmPath.Item2, tmPath.Item1); } else diff --git a/Xamarin.Forms.Platform.iOS/Extensions/ToolbarItemExtensions.cs b/Xamarin.Forms.Platform.iOS/Extensions/ToolbarItemExtensions.cs index 71bdbbac..3ee09643 100644 --- a/Xamarin.Forms.Platform.iOS/Extensions/ToolbarItemExtensions.cs +++ b/Xamarin.Forms.Platform.iOS/Extensions/ToolbarItemExtensions.cs @@ -33,6 +33,8 @@ namespace Xamarin.Forms.Platform.iOS readonly bool _forceName; readonly ToolbarItem _item; + IMenuItemController Controller => _item; + public PrimaryToolbarItem(ToolbarItem item, bool forceName) { _forceName = forceName; @@ -44,7 +46,7 @@ namespace Xamarin.Forms.Platform.iOS UpdateTextAndStyle(); UpdateIsEnabled(); - Clicked += (sender, e) => item.Activate(); + Clicked += (sender, e) => Controller.Activate(); item.PropertyChanged += OnPropertyChanged; if (item != null && !string.IsNullOrEmpty(item.AutomationId)) @@ -60,7 +62,7 @@ namespace Xamarin.Forms.Platform.iOS void OnPropertyChanged(object sender, PropertyChangedEventArgs e) { - if (e.PropertyName == MenuItem.IsEnabledProperty.PropertyName) + if (e.PropertyName == Controller.IsEnabledPropertyName) UpdateIsEnabled(); else if (e.PropertyName == MenuItem.TextProperty.PropertyName) { @@ -88,7 +90,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateIsEnabled() { - Enabled = _item.IsEnabled; + Enabled = Controller.IsEnabled; } void UpdateTextAndStyle() @@ -102,6 +104,7 @@ namespace Xamarin.Forms.Platform.iOS sealed class SecondaryToolbarItem : UIBarButtonItem { readonly ToolbarItem _item; + IMenuItemController Controller => _item; public SecondaryToolbarItem(ToolbarItem item) : base(new SecondaryToolbarItemContent()) { @@ -110,7 +113,7 @@ namespace Xamarin.Forms.Platform.iOS UpdateIcon(); UpdateIsEnabled(); - ((SecondaryToolbarItemContent)CustomView).TouchUpInside += (sender, e) => item.Activate(); + ((SecondaryToolbarItemContent)CustomView).TouchUpInside += (sender, e) => Controller.Activate(); item.PropertyChanged += OnPropertyChanged; if (item != null && !string.IsNullOrEmpty(item.AutomationId)) @@ -130,7 +133,7 @@ namespace Xamarin.Forms.Platform.iOS UpdateText(); else if (e.PropertyName == MenuItem.IconProperty.PropertyName) UpdateIcon(); - else if (e.PropertyName == MenuItem.IsEnabledProperty.PropertyName) + else if (e.PropertyName == Controller.IsEnabledPropertyName) UpdateIsEnabled(); } @@ -141,7 +144,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateIsEnabled() { - ((UIControl)CustomView).Enabled = _item.IsEnabled; + ((UIControl)CustomView).Enabled = Controller.IsEnabled; } void UpdateText() diff --git a/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs index 6e7c6b2a..49921313 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Drawing; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; #else diff --git a/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs index 80fcf53f..238759e9 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs @@ -5,6 +5,7 @@ using System.Collections.Specialized; using System.ComponentModel; using System.Drawing; using System.Linq; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; using Foundation; @@ -38,6 +39,8 @@ namespace Xamarin.Forms.Platform.iOS ScrollToRequestedEventArgs _requestedScroll; bool _shouldEstimateRowHeight = true; FormsUITableViewController _tableViewController; + IListViewController Controller => Element; + ITemplatedItemsView<Cell> TemplatedItemsView => Element; public override SizeRequest GetDesiredSize(double widthConstraint, double heightConstraint) { @@ -123,8 +126,9 @@ namespace Xamarin.Forms.Platform.iOS if (Element != null) { - Element.TemplatedItems.CollectionChanged -= OnCollectionChanged; - Element.TemplatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; + var templatedItems = TemplatedItemsView.TemplatedItems; + templatedItems.CollectionChanged -= OnCollectionChanged; + templatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; } if (_tableViewController != null) @@ -151,14 +155,12 @@ namespace Xamarin.Forms.Platform.iOS _footerRenderer = null; } - var controller = Element as IListViewController; - - var headerView = controller?.HeaderElement as VisualElement; + var headerView = Controller?.HeaderElement as VisualElement; if (headerView != null) headerView.MeasureInvalidated -= OnHeaderMeasureInvalidated; Control?.TableHeaderView?.Dispose(); - var footerView = controller?.FooterElement as VisualElement; + var footerView = Controller?.FooterElement as VisualElement; if (footerView != null) footerView.MeasureInvalidated -= OnFooterMeasureInvalidated; Control?.TableFooterView?.Dispose(); @@ -182,9 +184,11 @@ namespace Xamarin.Forms.Platform.iOS if (footerView != null) footerView.MeasureInvalidated -= OnFooterMeasureInvalidated; - e.OldElement.ScrollToRequested -= OnScrollToRequested; - e.OldElement.TemplatedItems.CollectionChanged -= OnCollectionChanged; - e.OldElement.TemplatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; + controller.ScrollToRequested -= OnScrollToRequested; + var templatedItems = ((ITemplatedItemsView<Cell>)e.OldElement).TemplatedItems; + + templatedItems.CollectionChanged -= OnCollectionChanged; + templatedItems.GroupedCollectionChanged -= OnGroupedCollectionChanged; } if (e.NewElement != null) @@ -204,14 +208,14 @@ namespace Xamarin.Forms.Platform.iOS }); } _shouldEstimateRowHeight = true; - //if the user specifies he wants to sacrifice performance we will do things like: - // - don't EstimateRowHeight anymore - if (e.NewElement.TakePerformanceHit) - _shouldEstimateRowHeight = false; - e.NewElement.ScrollToRequested += OnScrollToRequested; - e.NewElement.TemplatedItems.CollectionChanged += OnCollectionChanged; - e.NewElement.TemplatedItems.GroupedCollectionChanged += OnGroupedCollectionChanged; + var controller = (IListViewController)e.NewElement; + + controller.ScrollToRequested += OnScrollToRequested; + var templatedItems = ((ITemplatedItemsView<Cell>)e.NewElement).TemplatedItems; + + templatedItems.CollectionChanged += OnCollectionChanged; + templatedItems.GroupedCollectionChanged += OnGroupedCollectionChanged; UpdateRowHeight(); @@ -306,9 +310,10 @@ namespace Xamarin.Forms.Platform.iOS void OnGroupedCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { - var til = (TemplatedItemsList<ItemsView<Cell>, Cell>)sender; + var til = (ITemplatedItemsList<Cell>)sender; - var groupIndex = Element.TemplatedItems.IndexOf(til.HeaderContent); + var templatedItems = TemplatedItemsView.TemplatedItems; + var groupIndex = templatedItems.IndexOf(til.HeaderContent); UpdateItems(e, groupIndex, false); } @@ -334,16 +339,17 @@ namespace Xamarin.Forms.Platform.iOS } var position = GetScrollPosition(e.Position); - + var scrollArgs = (ITemplatedItemsListScrollToRequestedEventArgs)e; + var templatedItems = TemplatedItemsView.TemplatedItems; if (Element.IsGroupingEnabled) { - var result = Element.TemplatedItems.GetGroupAndIndexOfItem(e.Group, e.Item); + var result = templatedItems.GetGroupAndIndexOfItem(scrollArgs.Group, scrollArgs.Item); if (result.Item1 != -1 && result.Item2 != -1) Control.ScrollToRow(NSIndexPath.FromRowSection(result.Item2, result.Item1), position, e.ShouldAnimate); } else { - var index = Element.TemplatedItems.GetGlobalIndexOfItem(e.Item); + var index = templatedItems.GetGlobalIndexOfItem(scrollArgs.Item); if (index != -1) Control.ScrollToRow(NSIndexPath.FromRowSection(index, 0), position, e.ShouldAnimate); } @@ -360,16 +366,17 @@ namespace Xamarin.Forms.Platform.iOS var source = _dataSource as UnevenListViewDataSource; if (_shouldEstimateRowHeight) { - if (Element.TemplatedItems.Count > 0 && source != null) + var templatedItems = TemplatedItemsView.TemplatedItems; + if (templatedItems.Count > 0 && source != null) { - var estimatedHeightFromFirstCell = source.CalculateHeightForCell(Control, Element.TemplatedItems.First()); + var estimatedHeightFromFirstCell = source.CalculateHeightForCell(Control, templatedItems.First()); Control.EstimatedRowHeight = estimatedHeightFromFirstCell; _estimatedRowHeight = true; } else { //We need to set a default estimated row height, because re-setting it later(when we have items on the TIL) - //will cause the UITableView to reload, and throw a Excepetion + //will cause the UITableView to reload, and throw an Exception Control.EstimatedRowHeight = DefaultRowHeight; } } @@ -384,7 +391,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateFooter() { - var footer = ((IListViewController)Element).FooterElement; + var footer = Controller.FooterElement; var footerView = (View)footer; if (footerView != null) @@ -428,7 +435,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateHeader() { - var header = ((IListViewController)Element).HeaderElement; + var header = Controller.HeaderElement; var headerView = (View)header; if (headerView != null) @@ -506,7 +513,7 @@ namespace Xamarin.Forms.Platform.iOS Control.EndUpdates(); - if (_estimatedRowHeight && Element.TemplatedItems.Count == 0) + if (_estimatedRowHeight && TemplatedItemsView.TemplatedItems.Count == 0) _estimatedRowHeight = false; break; @@ -558,7 +565,7 @@ namespace Xamarin.Forms.Platform.iOS { if (_tableViewController != null) { - var isPullToRequestEnabled = Element.IsPullToRefreshEnabled && (Element as IListViewController).RefreshAllowed; + var isPullToRequestEnabled = Element.IsPullToRefreshEnabled && Controller.RefreshAllowed; _tableViewController.UpdatePullToRefreshEnabled(isPullToRequestEnabled); } } @@ -667,6 +674,8 @@ namespace Xamarin.Forms.Platform.iOS readonly UITableView _uiTableView; readonly FormsUITableViewController _uiTableViewController; protected readonly ListView List; + IListViewController Controller => List; + ITemplatedItemsView<Cell> TemplatedItemsView => List; bool _isDragging; bool _selectionFromNative; @@ -715,7 +724,7 @@ namespace Xamarin.Forms.Platform.iOS { UITableViewCell nativeCell = null; - var cachingStrategy = List.CachingStrategy; + var cachingStrategy = Controller.CachingStrategy; if (cachingStrategy == ListViewCachingStrategy.RetainElement) { var cell = GetCellForPath(indexPath); @@ -732,11 +741,12 @@ namespace Xamarin.Forms.Platform.iOS } else { - var templatedList = List.TemplatedItems.GetGroup(indexPath.Section); + var templatedList = TemplatedItemsView.TemplatedItems.GetGroup(indexPath.Section); var cell = (Cell)((INativeElementView)nativeCell).Element; - cell.SendDisappearing(); + ICellController controller = cell; + controller.SendDisappearing(); templatedList.UpdateContent(cell, indexPath.Row); - cell.SendAppearing(); + controller.SendAppearing(); } } else @@ -753,7 +763,7 @@ namespace Xamarin.Forms.Platform.iOS { if (List.IsGroupingEnabled) { - var cell = List.TemplatedItems[(int)section]; + var cell = TemplatedItemsView.TemplatedItems[(int)section]; nfloat height = (float)cell.RenderHeight; if (height == -1) height = _defaultSectionHeight; @@ -768,7 +778,7 @@ namespace Xamarin.Forms.Platform.iOS { if (List.IsGroupingEnabled && List.GroupHeaderTemplate != null) { - var cell = List.TemplatedItems[(int)section]; + var cell = TemplatedItemsView.TemplatedItems[(int)section]; if (cell.HasContextActions) throw new NotSupportedException("Header cells do not support context actions"); @@ -786,7 +796,7 @@ namespace Xamarin.Forms.Platform.iOS public override nint NumberOfSections(UITableView tableView) { if (List.IsGroupingEnabled) - return List.TemplatedItems.Count; + return TemplatedItemsView.TemplatedItems.Count; return 1; } @@ -799,7 +809,7 @@ namespace Xamarin.Forms.Platform.iOS return; } - var location = List.TemplatedItems.GetGroupAndIndexOfItem(eventArg.SelectedItem); + var location = TemplatedItemsView.TemplatedItems.GetGroupAndIndexOfItem(eventArg.SelectedItem); if (location.Item1 == -1 || location.Item2 == -1) { var selectedIndexPath = _uiTableView.IndexPathForSelectedRow; @@ -842,7 +852,7 @@ namespace Xamarin.Forms.Platform.iOS return; Cell formsCell = null; - if (List.CachingStrategy == ListViewCachingStrategy.RecycleElement) + if (Controller.CachingStrategy == ListViewCachingStrategy.RecycleElement) formsCell = (Cell)((INativeElementView)cell).Element; SetCellBackgroundColor(cell, UIColor.Clear); @@ -850,7 +860,7 @@ namespace Xamarin.Forms.Platform.iOS _selectionFromNative = true; tableView.EndEditing(true); - List.NotifyRowTapped(indexPath.Section, indexPath.Row, formsCell); + Controller.NotifyRowTapped(indexPath.Section, indexPath.Row, formsCell); } public override nint RowsInSection(UITableView tableview, nint section) @@ -862,13 +872,14 @@ namespace Xamarin.Forms.Platform.iOS return countOverride; } + var templatedItems = TemplatedItemsView.TemplatedItems; if (List.IsGroupingEnabled) { - var group = (IList)((IList)List.TemplatedItems)[(int)section]; + var group = (IList)((IList)templatedItems)[(int)section]; return group.Count; } - return List.TemplatedItems.Count; + return templatedItems.Count; } public override void Scrolled(UIScrollView scrollView) @@ -879,10 +890,11 @@ namespace Xamarin.Forms.Platform.iOS public override string[] SectionIndexTitles(UITableView tableView) { - if (List.TemplatedItems.ShortNames == null) + var templatedItems = TemplatedItemsView.TemplatedItems; + if (templatedItems.ShortNames == null) return null; - return List.TemplatedItems.ShortNames.ToArray(); + return templatedItems.ShortNames.ToArray(); } public override string TitleForHeader(UITableView tableView, nint section) @@ -905,25 +917,25 @@ namespace Xamarin.Forms.Platform.iOS protected Cell GetCellForPath(NSIndexPath indexPath) { - var templatedList = List.TemplatedItems; + var templatedItems = TemplatedItemsView.TemplatedItems; if (List.IsGroupingEnabled) - templatedList = (TemplatedItemsList<ItemsView<Cell>, Cell>)((IList)templatedList)[indexPath.Section]; + templatedItems = (ITemplatedItemsList<Cell>)((IList)templatedItems)[indexPath.Section]; - var cell = templatedList[indexPath.Row]; + var cell = templatedItems[indexPath.Row]; return cell; } - TemplatedItemsList<ItemsView<Cell>, Cell> GetSectionList(int section) + ITemplatedItemsList<Cell> GetSectionList(int section) { - return (TemplatedItemsList<ItemsView<Cell>, Cell>)((IList)List.TemplatedItems)[section]; + return (ITemplatedItemsList<Cell>)((IList)TemplatedItemsView.TemplatedItems) [section]; } void OnSectionPropertyChanged(object sender, PropertyChangedEventArgs e) { var currentSelected = _uiTableView.IndexPathForSelectedRow; - var til = (TemplatedItemsList<ItemsView<Cell>, Cell>)sender; - var groupIndex = ((IList)List.TemplatedItems).IndexOf(til); + var til = (ITemplatedItemsView<Cell>)sender; + var groupIndex = ((IList)TemplatedItemsView.TemplatedItems).IndexOf(til); if (groupIndex == -1) { til.PropertyChanged -= OnSectionPropertyChanged; @@ -954,11 +966,11 @@ namespace Xamarin.Forms.Platform.iOS if (selector == null) return DefaultItemTemplateId; - var templatedList = List.TemplatedItems; + var templatedList = TemplatedItemsView.TemplatedItems; if (List.IsGroupingEnabled) - templatedList = (TemplatedItemsList<ItemsView<Cell>, Cell>)((IList)templatedList)[indexPath.Section]; + templatedList = (ITemplatedItemsList<Cell>)((IList)templatedList)[indexPath.Section]; - var item = templatedList.ListProxy[indexPath.Row]; + var item = ((ITemplatedItemsView<Cell>)templatedList).ListProxy[indexPath.Row]; itemTemplate = selector.SelectTemplate(item, List); int key; @@ -973,15 +985,16 @@ namespace Xamarin.Forms.Platform.iOS void UpdateShortNameListener() { + var templatedList = TemplatedItemsView.TemplatedItems; if (List.IsGroupingEnabled) { - if (List.TemplatedItems.ShortNames != null) - ((INotifyCollectionChanged)List.TemplatedItems.ShortNames).CollectionChanged += OnShortNamesCollectionChanged; + if (templatedList.ShortNames != null) + ((INotifyCollectionChanged)templatedList.ShortNames).CollectionChanged += OnShortNamesCollectionChanged; } else { - if (List.TemplatedItems.ShortNames != null) - ((INotifyCollectionChanged)List.TemplatedItems.ShortNames).CollectionChanged -= OnShortNamesCollectionChanged; + if (templatedList.ShortNames != null) + ((INotifyCollectionChanged)templatedList.ShortNames).CollectionChanged -= OnShortNamesCollectionChanged; } } } @@ -1000,6 +1013,7 @@ namespace Xamarin.Forms.Platform.iOS internal class FormsUITableViewController : UITableViewController { readonly ListView _list; + IListViewController Controller => _list; UIRefreshControl _refresh; bool _refreshAdded; @@ -1101,7 +1115,7 @@ namespace Xamarin.Forms.Platform.iOS void OnRefreshingChanged(object sender, EventArgs eventArgs) { if (_refresh.Refreshing) - (_list as IListViewController).SendRefreshing(); + Controller.SendRefreshing(); } void RemoveRefresh() diff --git a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs index d0798ed3..9f2c2666 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using Xamarin.Forms.Internals; + #if __UNIFIED__ using UIKit; using CoreGraphics; diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs index 4ec16967..25fceb41 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs @@ -3,6 +3,7 @@ using System.Collections.Specialized; using System.ComponentModel; using System.Linq; using System.Collections.Generic; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; #else diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TableViewModelRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TableViewModelRenderer.cs index dcb943bf..cc70a5f1 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TableViewModelRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TableViewModelRenderer.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Xamarin.Forms; +using Xamarin.Forms.Internals; #if __UNIFIED__ using UIKit; using Foundation; @@ -25,6 +26,8 @@ namespace Xamarin.Forms.Platform.iOS { readonly Dictionary<nint, Cell> _headerCells = new Dictionary<nint, Cell>(); + protected ITableViewController Controller => View; + protected bool HasBoundGestures; protected UITableView Table; @@ -33,7 +36,7 @@ namespace Xamarin.Forms.Platform.iOS public TableViewModelRenderer(TableView model) { View = model; - View.ModelChanged += (s, e) => + Controller.ModelChanged += (s, e) => { if (Table != null) Table.ReloadData(); @@ -45,7 +48,7 @@ namespace Xamarin.Forms.Platform.iOS public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { - var cell = View.Model.GetCell(indexPath.Section, indexPath.Row); + var cell = Controller.Model.GetCell(indexPath.Section, indexPath.Row); var nativeCell = CellTableViewCell.GetNativeCell(tableView, cell); return nativeCell; @@ -54,7 +57,7 @@ namespace Xamarin.Forms.Platform.iOS public override nfloat GetHeightForHeader(UITableView tableView, nint section) { if (!_headerCells.ContainsKey((int)section)) - _headerCells[section] = View.Model.GetHeaderCell((int)section); + _headerCells[section] = Controller.Model.GetHeaderCell((int)section); var result = _headerCells[section]; @@ -64,7 +67,7 @@ namespace Xamarin.Forms.Platform.iOS public override UIView GetViewForHeader(UITableView tableView, nint section) { if (!_headerCells.ContainsKey((int)section)) - _headerCells[section] = View.Model.GetHeaderCell((int)section); + _headerCells[section] = Controller.Model.GetHeaderCell((int)section); var result = _headerCells[section]; @@ -85,35 +88,35 @@ namespace Xamarin.Forms.Platform.iOS if (indexPath == null) return; - View.Model.RowLongPressed(indexPath.Section, indexPath.Row); + Controller.Model.RowLongPressed(indexPath.Section, indexPath.Row); } public override nint NumberOfSections(UITableView tableView) { BindGestures(tableView); - return View.Model.GetSectionCount(); + return Controller.Model.GetSectionCount(); } public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { - View.Model.RowSelected(indexPath.Section, indexPath.Row); + Controller.Model.RowSelected(indexPath.Section, indexPath.Row); if (AutomaticallyDeselect) tableView.DeselectRow(indexPath, true); } public override nint RowsInSection(UITableView tableview, nint section) { - return View.Model.GetRowCount((int)section); + return Controller.Model.GetRowCount((int)section); } public override string[] SectionIndexTitles(UITableView tableView) { - return View.Model.GetSectionIndexTitles(); + return Controller.Model.GetSectionIndexTitles(); } public override string TitleForHeader(UITableView tableView, nint section) { - return View.Model.GetSectionTitle((int)section); + return Controller.Model.GetSectionTitle((int)section); } void BindGestures(UITableView tableview) diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/CellExtensions.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/CellExtensions.xml new file mode 100644 index 00000000..836d0710 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/CellExtensions.xml @@ -0,0 +1,214 @@ +<Type Name="CellExtensions" FullName="Xamarin.Forms.Internals.CellExtensions"> + <TypeSignature Language="C#" Value="public static class CellExtensions" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit CellExtensions extends System.Object" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="GetGroup<TView,TItem>"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.ITemplatedItemsList<TItem> GetGroup<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.ITemplatedItemsList`1<!!TItem> GetGroup<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ITemplatedItemsList<TItem></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetGroupHeaderContent<TView,TItem>"> + <MemberSignature Language="C#" Value="public static TItem GetGroupHeaderContent<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TItem GetGroupHeaderContent<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>TItem</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetIndex<TView,TItem>"> + <MemberSignature Language="C#" Value="public static int GetIndex<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetIndex<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetIsGroupHeader<TView,TItem>"> + <MemberSignature Language="C#" Value="public static bool GetIsGroupHeader<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool GetIsGroupHeader<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetPath"> + <MemberSignature Language="C#" Value="public static Tuple<int,int> GetPath (this Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Tuple`2<int32, int32> GetPath(class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Tuple<System.Int32,System.Int32></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" RefType="this" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetIsGroupHeader<TView,TItem>"> + <MemberSignature Language="C#" Value="public static void SetIsGroupHeader<TView,TItem> (this TItem cell, bool value) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetIsGroupHeader<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell, bool value) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + <Parameter Name="value" Type="System.Boolean" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsEx.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsEx.xml new file mode 100644 index 00000000..504754ca --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsEx.xml @@ -0,0 +1,276 @@ +<Type Name="NotifyCollectionChangedEventArgsEx" FullName="Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsEx"> + <TypeSignature Language="C#" Value="public class NotifyCollectionChangedEventArgsEx : System.Collections.Specialized.NotifyCollectionChangedEventArgs" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NotifyCollectionChangedEventArgsEx extends System.Collections.Specialized.NotifyCollectionChangedEventArgs" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Collections.Specialized.NotifyCollectionChangedEventArgs</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, System.Collections.IList changedItems);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, class System.Collections.IList changedItems) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="changedItems" Type="System.Collections.IList" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="changedItems">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, object changedItem);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, object changedItem) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="changedItem" Type="System.Object" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="changedItem">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, System.Collections.IList newItems, System.Collections.IList oldItems);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, class System.Collections.IList newItems, class System.Collections.IList oldItems) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="newItems" Type="System.Collections.IList" /> + <Parameter Name="oldItems" Type="System.Collections.IList" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="newItems">To be added.</param> + <param name="oldItems">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, System.Collections.IList changedItems, int startingIndex);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, class System.Collections.IList changedItems, int32 startingIndex) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="changedItems" Type="System.Collections.IList" /> + <Parameter Name="startingIndex" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="changedItems">To be added.</param> + <param name="startingIndex">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, object changedItem, int index);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, object changedItem, int32 index) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="changedItem" Type="System.Object" /> + <Parameter Name="index" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="changedItem">To be added.</param> + <param name="index">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, object newItem, object oldItem);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, object newItem, object oldItem) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="newItem" Type="System.Object" /> + <Parameter Name="oldItem" Type="System.Object" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="newItem">To be added.</param> + <param name="oldItem">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, System.Collections.IList newItems, System.Collections.IList oldItems, int startingIndex);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, class System.Collections.IList newItems, class System.Collections.IList oldItems, int32 startingIndex) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="newItems" Type="System.Collections.IList" /> + <Parameter Name="oldItems" Type="System.Collections.IList" /> + <Parameter Name="startingIndex" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="newItems">To be added.</param> + <param name="oldItems">To be added.</param> + <param name="startingIndex">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, System.Collections.IList changedItems, int index, int oldIndex);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, class System.Collections.IList changedItems, int32 index, int32 oldIndex) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="changedItems" Type="System.Collections.IList" /> + <Parameter Name="index" Type="System.Int32" /> + <Parameter Name="oldIndex" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="changedItems">To be added.</param> + <param name="index">To be added.</param> + <param name="oldIndex">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, object changedItem, int index, int oldIndex);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, object changedItem, int32 index, int32 oldIndex) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="changedItem" Type="System.Object" /> + <Parameter Name="index" Type="System.Int32" /> + <Parameter Name="oldIndex" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="changedItem">To be added.</param> + <param name="index">To be added.</param> + <param name="oldIndex">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName=".ctor"> + <MemberSignature Language="C#" Value="public NotifyCollectionChangedEventArgsEx (int count, System.Collections.Specialized.NotifyCollectionChangedAction action, object newItem, object oldItem, int index);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 count, valuetype System.Collections.Specialized.NotifyCollectionChangedAction action, object newItem, object oldItem, int32 index) cil managed" /> + <MemberType>Constructor</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Parameters> + <Parameter Name="count" Type="System.Int32" /> + <Parameter Name="action" Type="System.Collections.Specialized.NotifyCollectionChangedAction" /> + <Parameter Name="newItem" Type="System.Object" /> + <Parameter Name="oldItem" Type="System.Object" /> + <Parameter Name="index" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="count">To be added.</param> + <param name="action">To be added.</param> + <param name="newItem">To be added.</param> + <param name="oldItem">To be added.</param> + <param name="index">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Count"> + <MemberSignature Language="C#" Value="public int Count { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance int32 Count" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsExtensions.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsExtensions.xml new file mode 100644 index 00000000..eb3470b9 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsExtensions.xml @@ -0,0 +1,93 @@ +<Type Name="NotifyCollectionChangedEventArgsExtensions" FullName="Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsExtensions"> + <TypeSignature Language="C#" Value="public static class NotifyCollectionChangedEventArgsExtensions" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit NotifyCollectionChangedEventArgsExtensions extends System.Object" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Base> + <BaseTypeName>System.Object</BaseTypeName> + </Base> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Apply"> + <MemberSignature Language="C#" Value="public static System.Collections.Specialized.NotifyCollectionChangedAction Apply (this System.Collections.Specialized.NotifyCollectionChangedEventArgs self, Action<object,int,bool> insert, Action<object,int> removeAt, Action reset);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype System.Collections.Specialized.NotifyCollectionChangedAction Apply(class System.Collections.Specialized.NotifyCollectionChangedEventArgs self, class System.Action`3<object, int32, bool> insert, class System.Action`2<object, int32> removeAt, class System.Action reset) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.Specialized.NotifyCollectionChangedAction</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="self" Type="System.Collections.Specialized.NotifyCollectionChangedEventArgs" RefType="this" /> + <Parameter Name="insert" Type="System.Action<System.Object,System.Int32,System.Boolean>" /> + <Parameter Name="removeAt" Type="System.Action<System.Object,System.Int32>" /> + <Parameter Name="reset" Type="System.Action" /> + </Parameters> + <Docs> + <param name="self">To be added.</param> + <param name="insert">To be added.</param> + <param name="removeAt">To be added.</param> + <param name="reset">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Apply<TFrom>"> + <MemberSignature Language="C#" Value="public static void Apply<TFrom> (this System.Collections.Specialized.NotifyCollectionChangedEventArgs self, System.Collections.Generic.IList<TFrom> from, System.Collections.Generic.IList<object> to);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Apply<TFrom>(class System.Collections.Specialized.NotifyCollectionChangedEventArgs self, class System.Collections.Generic.IList`1<!!TFrom> from, class System.Collections.Generic.IList`1<object> to) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TFrom" /> + </TypeParameters> + <Parameters> + <Parameter Name="self" Type="System.Collections.Specialized.NotifyCollectionChangedEventArgs" RefType="this" /> + <Parameter Name="from" Type="System.Collections.Generic.IList<TFrom>" /> + <Parameter Name="to" Type="System.Collections.Generic.IList<System.Object>" /> + </Parameters> + <Docs> + <typeparam name="TFrom">To be added.</typeparam> + <param name="self">To be added.</param> + <param name="from">To be added.</param> + <param name="to">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="WithCount"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsEx WithCount (this System.Collections.Specialized.NotifyCollectionChangedEventArgs e, int count);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsEx WithCount(class System.Collections.Specialized.NotifyCollectionChangedEventArgs e, int32 count) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsEx</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="e" Type="System.Collections.Specialized.NotifyCollectionChangedEventArgs" RefType="this" /> + <Parameter Name="count" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="e">To be added.</param> + <param name="count">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationRequestedEventArgs.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/ToolbarTracker.xml index 550f755d..46a698db 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationRequestedEventArgs.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/ToolbarTracker.xml @@ -1,12 +1,12 @@ -<Type Name="NavigationRequestedEventArgs" FullName="Xamarin.Forms.NavigationRequestedEventArgs"> - <TypeSignature Language="C#" Value="public class NavigationRequestedEventArgs : Xamarin.Forms.NavigationEventArgs" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NavigationRequestedEventArgs extends Xamarin.Forms.NavigationEventArgs" /> +<Type Name="ToolbarTracker" FullName="Xamarin.Forms.Internals.ToolbarTracker"> + <TypeSignature Language="C#" Value="public class ToolbarTracker" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ToolbarTracker extends System.Object" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <Base> - <BaseTypeName>Xamarin.Forms.NavigationEventArgs</BaseTypeName> + <BaseTypeName>System.Object</BaseTypeName> </Base> <Interfaces /> <Docs> @@ -15,48 +15,52 @@ </Docs> <Members> <Member MemberName=".ctor"> - <MemberSignature Language="C#" Value="public NavigationRequestedEventArgs (Xamarin.Forms.Page page, bool animated, bool realize = true);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Xamarin.Forms.Page page, bool animated, bool realize) cil managed" /> + <MemberSignature Language="C#" Value="public ToolbarTracker ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /> <MemberType>Constructor</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> - <Parameters> - <Parameter Name="page" Type="Xamarin.Forms.Page" /> - <Parameter Name="animated" Type="System.Boolean" /> - <Parameter Name="realize" Type="System.Boolean" /> - </Parameters> + <Parameters /> <Docs> - <param name="page">To be added.</param> - <param name="animated">To be added.</param> - <param name="realize">To be added.</param> <summary>To be added.</summary> <remarks>To be added.</remarks> </Docs> </Member> - <Member MemberName=".ctor"> - <MemberSignature Language="C#" Value="public NavigationRequestedEventArgs (Xamarin.Forms.Page page, Xamarin.Forms.Page before, bool animated);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class Xamarin.Forms.Page page, class Xamarin.Forms.Page before, bool animated) cil managed" /> - <MemberType>Constructor</MemberType> + <Member MemberName="AdditionalTargets"> + <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerable<Xamarin.Forms.Page> AdditionalTargets { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IEnumerable`1<class Xamarin.Forms.Page> AdditionalTargets" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.Generic.IEnumerable<Xamarin.Forms.Page></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="CollectionChanged"> + <MemberSignature Language="C#" Value="public event EventHandler CollectionChanged;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler CollectionChanged" /> + <MemberType>Event</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> - <Parameters> - <Parameter Name="page" Type="Xamarin.Forms.Page" /> - <Parameter Name="before" Type="Xamarin.Forms.Page" /> - <Parameter Name="animated" Type="System.Boolean" /> - </Parameters> + <ReturnValue> + <ReturnType>System.EventHandler</ReturnType> + </ReturnValue> <Docs> - <param name="page">To be added.</param> - <param name="before">To be added.</param> - <param name="animated">To be added.</param> <summary>To be added.</summary> <remarks>To be added.</remarks> </Docs> </Member> - <Member MemberName="Animated"> - <MemberSignature Language="C#" Value="public bool Animated { get; set; }" /> - <MemberSignature Language="ILAsm" Value=".property instance bool Animated" /> + <Member MemberName="HaveMasterDetail"> + <MemberSignature Language="C#" Value="public bool HaveMasterDetail { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool HaveMasterDetail" /> <MemberType>Property</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> @@ -70,15 +74,15 @@ <remarks>To be added.</remarks> </Docs> </Member> - <Member MemberName="BeforePage"> - <MemberSignature Language="C#" Value="public Xamarin.Forms.Page BeforePage { get; set; }" /> - <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Page BeforePage" /> + <Member MemberName="SeparateMasterDetail"> + <MemberSignature Language="C#" Value="public bool SeparateMasterDetail { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool SeparateMasterDetail" /> <MemberType>Property</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>Xamarin.Forms.Page</ReturnType> + <ReturnType>System.Boolean</ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> @@ -86,15 +90,15 @@ <remarks>To be added.</remarks> </Docs> </Member> - <Member MemberName="Realize"> - <MemberSignature Language="C#" Value="public bool Realize { get; set; }" /> - <MemberSignature Language="ILAsm" Value=".property instance bool Realize" /> + <Member MemberName="Target"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Page Target { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Page Target" /> <MemberType>Property</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>System.Boolean</ReturnType> + <ReturnType>Xamarin.Forms.Page</ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> @@ -102,15 +106,15 @@ <remarks>To be added.</remarks> </Docs> </Member> - <Member MemberName="Task"> - <MemberSignature Language="C#" Value="public System.Threading.Tasks.Task<bool> Task { get; set; }" /> - <MemberSignature Language="ILAsm" Value=".property instance class System.Threading.Tasks.Task`1<bool> Task" /> + <Member MemberName="ToolbarItems"> + <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerable<Xamarin.Forms.ToolbarItem> ToolbarItems { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IEnumerable`1<class Xamarin.Forms.ToolbarItem> ToolbarItems" /> <MemberType>Property</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>System.Threading.Tasks.Task<System.Boolean></ReturnType> + <ReturnType>System.Collections.Generic.IEnumerable<Xamarin.Forms.ToolbarItem></ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/Cell.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/Cell.xml index 96e60c4a..77456af1 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/Cell.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/Cell.xml @@ -1,6 +1,6 @@ <Type Name="Cell" FullName="Xamarin.Forms.Cell"> - <TypeSignature Language="C#" Value="public abstract class Cell : Xamarin.Forms.Element" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit Cell extends Xamarin.Forms.Element" /> + <TypeSignature Language="C#" Value="public abstract class Cell : Xamarin.Forms.Element, Xamarin.Forms.ICellController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit Cell extends Xamarin.Forms.Element implements class Xamarin.Forms.ICellController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.Element</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.ICellController</InterfaceName> + </Interface> + </Interfaces> <Docs> <summary>Provides base class and capabilities for all Forms cells. Cells are elements meant to be added to <see cref="T:Xamarin.Forms.ListView" /> or <see cref="T:Xamarin.Forms.TableView" />.</summary> <remarks> @@ -506,5 +510,37 @@ Content = new TableView </remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.ICellController.SendAppearing"> + <MemberSignature Language="C#" Value="void ICellController.SendAppearing ();" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.ICellController.SendAppearing() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.ICellController.SendDisappearing"> + <MemberSignature Language="C#" Value="void ICellController.SendDisappearing ();" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.ICellController.SendDisappearing() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/EntryCell.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/EntryCell.xml index 49a7f662..4535ab23 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/EntryCell.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/EntryCell.xml @@ -1,6 +1,6 @@ <Type Name="EntryCell" FullName="Xamarin.Forms.EntryCell"> - <TypeSignature Language="C#" Value="public class EntryCell : Xamarin.Forms.Cell" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit EntryCell extends Xamarin.Forms.Cell" /> + <TypeSignature Language="C#" Value="public class EntryCell : Xamarin.Forms.Cell, Xamarin.Forms.IEntryCellController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit EntryCell extends Xamarin.Forms.Cell implements class Xamarin.Forms.IEntryCellController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.Cell</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IEntryCellController</InterfaceName> + </Interface> + </Interfaces> <Docs> <summary>A <see cref="T:Xamarin.Forms.Cell" /> with a label and a single line text entry field.</summary> <remarks> @@ -470,5 +474,21 @@ namespace FormsGallery </remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.IEntryCellController.SendCompleted"> + <MemberSignature Language="C#" Value="void IEntryCellController.SendCompleted ();" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.IEntryCellController.SendCompleted() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ICellController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ICellController.xml new file mode 100644 index 00000000..09228468 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ICellController.xml @@ -0,0 +1,62 @@ +<Type Name="ICellController" FullName="Xamarin.Forms.ICellController"> + <TypeSignature Language="C#" Value="public interface ICellController" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ICellController" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="ForceUpdateSizeRequested"> + <MemberSignature Language="C#" Value="public event EventHandler ForceUpdateSizeRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler ForceUpdateSizeRequested" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SendAppearing"> + <MemberSignature Language="C#" Value="public void SendAppearing ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SendAppearing() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SendDisappearing"> + <MemberSignature Language="C#" Value="public void SendDisappearing ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SendDisappearing() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IEntryCellController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IEntryCellController.xml new file mode 100644 index 00000000..ec78c1f1 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IEntryCellController.xml @@ -0,0 +1,31 @@ +<Type Name="IEntryCellController" FullName="Xamarin.Forms.IEntryCellController"> + <TypeSignature Language="C#" Value="public interface IEntryCellController" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IEntryCellController" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="SendCompleted"> + <MemberSignature Language="C#" Value="public void SendCompleted ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SendCompleted() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IItemsView`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IItemsView`1.xml new file mode 100644 index 00000000..a4695a9a --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IItemsView`1.xml @@ -0,0 +1,83 @@ +<Type Name="IItemsView<T>" FullName="Xamarin.Forms.IItemsView<T>"> + <TypeSignature Language="C#" Value="public interface IItemsView<T> where T : BindableObject" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IItemsView`1<(class Xamarin.Forms.BindableObject) T>" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <TypeParameters> + <TypeParameter Name="T"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Interfaces /> + <Docs> + <typeparam name="T">To be added.</typeparam> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="CreateDefault"> + <MemberSignature Language="C#" Value="public T CreateDefault (object item);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !T CreateDefault(object item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>T</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="item" Type="System.Object" /> + </Parameters> + <Docs> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SetupContent"> + <MemberSignature Language="C#" Value="public void SetupContent (T content, int index);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SetupContent(!T content, int32 index) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="content" Type="T" /> + <Parameter Name="index" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="content">To be added.</param> + <param name="index">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="UnhookContent"> + <MemberSignature Language="C#" Value="public void UnhookContent (T content);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void UnhookContent(!T content) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="content" Type="T" /> + </Parameters> + <Docs> + <param name="content">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IListProxy.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IListProxy.xml new file mode 100644 index 00000000..8291e070 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IListProxy.xml @@ -0,0 +1,50 @@ +<Type Name="IListProxy" FullName="Xamarin.Forms.IListProxy"> + <TypeSignature Language="C#" Value="public interface IListProxy : System.Collections.IList" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IListProxy implements class System.Collections.ICollection, class System.Collections.IEnumerable, class System.Collections.IList" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces> + <Interface> + <InterfaceName>System.Collections.IList</InterfaceName> + </Interface> + </Interfaces> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="CollectionChanged"> + <MemberSignature Language="C#" Value="public event System.Collections.Specialized.NotifyCollectionChangedEventHandler CollectionChanged;" /> + <MemberSignature Language="ILAsm" Value=".event class System.Collections.Specialized.NotifyCollectionChangedEventHandler CollectionChanged" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.Specialized.NotifyCollectionChangedEventHandler</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="ProxiedEnumerable"> + <MemberSignature Language="C#" Value="public System.Collections.IEnumerable ProxiedEnumerable { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.IEnumerable ProxiedEnumerable" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.IEnumerable</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IListViewController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IListViewController.xml new file mode 100644 index 00000000..2bc241f0 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IListViewController.xml @@ -0,0 +1,236 @@ +<Type Name="IListViewController" FullName="Xamarin.Forms.IListViewController"> + <TypeSignature Language="C#" Value="public interface IListViewController : Xamarin.Forms.IViewController" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IListViewController implements class Xamarin.Forms.IElementController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IViewController</InterfaceName> + </Interface> + </Interfaces> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="CachingStrategy"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.ListViewCachingStrategy CachingStrategy { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance valuetype Xamarin.Forms.ListViewCachingStrategy CachingStrategy" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ListViewCachingStrategy</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="CreateDefaultCell"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Cell CreateDefaultCell (object item);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.Cell CreateDefaultCell(object item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Cell</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="item" Type="System.Object" /> + </Parameters> + <Docs> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="FooterElement"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Element FooterElement { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Element FooterElement" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Element</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetDisplayTextFromGroup"> + <MemberSignature Language="C#" Value="public string GetDisplayTextFromGroup (object cell);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance string GetDisplayTextFromGroup(object cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="System.Object" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="HeaderElement"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Element HeaderElement { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Element HeaderElement" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Element</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="NotifyRowTapped"> + <MemberSignature Language="C#" Value="public void NotifyRowTapped (int index, Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void NotifyRowTapped(int32 index, class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="index" Type="System.Int32" /> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="index">To be added.</param> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="NotifyRowTapped"> + <MemberSignature Language="C#" Value="public void NotifyRowTapped (int index, int inGroupIndex, Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void NotifyRowTapped(int32 index, int32 inGroupIndex, class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="index" Type="System.Int32" /> + <Parameter Name="inGroupIndex" Type="System.Int32" /> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="index">To be added.</param> + <param name="inGroupIndex">To be added.</param> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="RefreshAllowed"> + <MemberSignature Language="C#" Value="public bool RefreshAllowed { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool RefreshAllowed" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="ScrollToRequested"> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.ScrollToRequestedEventArgs> ScrollToRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.ScrollToRequestedEventArgs> ScrollToRequested" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler<Xamarin.Forms.ScrollToRequestedEventArgs></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SendCellAppearing"> + <MemberSignature Language="C#" Value="public void SendCellAppearing (Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SendCellAppearing(class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SendCellDisappearing"> + <MemberSignature Language="C#" Value="public void SendCellDisappearing (Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SendCellDisappearing(class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="SendRefreshing"> + <MemberSignature Language="C#" Value="public void SendRefreshing ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SendRefreshing() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/IMenuItemController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/IMenuItemController.xml new file mode 100644 index 00000000..f9b57f71 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/IMenuItemController.xml @@ -0,0 +1,63 @@ +<Type Name="IMenuItemController" FullName="Xamarin.Forms.IMenuItemController"> + <TypeSignature Language="C#" Value="public interface IMenuItemController" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IMenuItemController" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Activate"> + <MemberSignature Language="C#" Value="public void Activate ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Activate() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="IsEnabled"> + <MemberSignature Language="C#" Value="public bool IsEnabled { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool IsEnabled" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="IsEnabledPropertyName"> + <MemberSignature Language="C#" Value="public string IsEnabledPropertyName { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance string IsEnabledPropertyName" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml index f776f98c..969841e9 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml @@ -12,14 +12,14 @@ </Docs> <Members> <Member MemberName="InsertPageBeforeRequested"> - <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> InsertPageBeforeRequested;" /> - <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> InsertPageBeforeRequested" /> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs> InsertPageBeforeRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.Internals.NavigationRequestedEventArgs> InsertPageBeforeRequested" /> <MemberType>Event</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + <ReturnType>System.EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs></ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> @@ -49,14 +49,14 @@ </Docs> </Member> <Member MemberName="PopRequested"> - <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> PopRequested;" /> - <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> PopRequested" /> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs> PopRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.Internals.NavigationRequestedEventArgs> PopRequested" /> <MemberType>Event</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + <ReturnType>System.EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs></ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> @@ -64,14 +64,14 @@ </Docs> </Member> <Member MemberName="PopToRootRequested"> - <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> PopToRootRequested;" /> - <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> PopToRootRequested" /> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs> PopToRootRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.Internals.NavigationRequestedEventArgs> PopToRootRequested" /> <MemberType>Event</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + <ReturnType>System.EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs></ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> @@ -79,14 +79,14 @@ </Docs> </Member> <Member MemberName="PushRequested"> - <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> PushRequested;" /> - <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> PushRequested" /> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs> PushRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.Internals.NavigationRequestedEventArgs> PushRequested" /> <MemberType>Event</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + <ReturnType>System.EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs></ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> @@ -94,14 +94,14 @@ </Docs> </Member> <Member MemberName="RemovePageRequested"> - <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.NavigationRequestedEventArgs> RemovePageRequested;" /> - <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.NavigationRequestedEventArgs> RemovePageRequested" /> + <MemberSignature Language="C#" Value="public event EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs> RemovePageRequested;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1<class Xamarin.Forms.Internals.NavigationRequestedEventArgs> RemovePageRequested" /> <MemberType>Event</MemberType> <AssemblyInfo> <AssemblyVersion>2.0.0.0</AssemblyVersion> </AssemblyInfo> <ReturnValue> - <ReturnType>System.EventHandler<Xamarin.Forms.NavigationRequestedEventArgs></ReturnType> + <ReturnType>System.EventHandler<Xamarin.Forms.Internals.NavigationRequestedEventArgs></ReturnType> </ReturnValue> <Docs> <summary>To be added.</summary> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ITableModel.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITableModel.xml new file mode 100644 index 00000000..2789c237 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITableModel.xml @@ -0,0 +1,214 @@ +<Type Name="ITableModel" FullName="Xamarin.Forms.ITableModel"> + <TypeSignature Language="C#" Value="public interface ITableModel" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITableModel" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="GetCell"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Cell GetCell (int section, int row);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.Cell GetCell(int32 section, int32 row) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Cell</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="section" Type="System.Int32" /> + <Parameter Name="row" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="section">To be added.</param> + <param name="row">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetHeaderCell"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.Cell GetHeaderCell (int section);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.Cell GetHeaderCell(int32 section) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Cell</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="section" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="section">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetItem"> + <MemberSignature Language="C#" Value="public object GetItem (int section, int row);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance object GetItem(int32 section, int32 row) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Object</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="section" Type="System.Int32" /> + <Parameter Name="row" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="section">To be added.</param> + <param name="row">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetRowCount"> + <MemberSignature Language="C#" Value="public int GetRowCount (int section);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 GetRowCount(int32 section) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="section" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="section">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetSectionCount"> + <MemberSignature Language="C#" Value="public int GetSectionCount ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 GetSectionCount() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetSectionIndexTitles"> + <MemberSignature Language="C#" Value="public string[] GetSectionIndexTitles ();" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance string[] GetSectionIndexTitles() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String[]</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetSectionTitle"> + <MemberSignature Language="C#" Value="public string GetSectionTitle (int section);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance string GetSectionTitle(int32 section) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="section" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="section">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="RowLongPressed"> + <MemberSignature Language="C#" Value="public void RowLongPressed (int section, int row);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void RowLongPressed(int32 section, int32 row) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="section" Type="System.Int32" /> + <Parameter Name="row" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="section">To be added.</param> + <param name="row">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="RowSelected"> + <MemberSignature Language="C#" Value="public void RowSelected (object item);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void RowSelected(object item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="item" Type="System.Object" /> + </Parameters> + <Docs> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="RowSelected"> + <MemberSignature Language="C#" Value="public void RowSelected (int section, int row);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void RowSelected(int32 section, int32 row) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="section" Type="System.Int32" /> + <Parameter Name="row" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="section">To be added.</param> + <param name="row">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ITableViewController.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITableViewController.xml new file mode 100644 index 00000000..dc5fb279 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITableViewController.xml @@ -0,0 +1,46 @@ +<Type Name="ITableViewController" FullName="Xamarin.Forms.ITableViewController"> + <TypeSignature Language="C#" Value="public interface ITableViewController" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITableViewController" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Model"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.ITableModel Model { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.ITableModel Model" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ITableModel</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="ModelChanged"> + <MemberSignature Language="C#" Value="public event EventHandler ModelChanged;" /> + <MemberSignature Language="ILAsm" Value=".event class System.EventHandler ModelChanged" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.EventHandler</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsListScrollToRequestedEventArgs.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsListScrollToRequestedEventArgs.xml new file mode 100644 index 00000000..f9e99de8 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsListScrollToRequestedEventArgs.xml @@ -0,0 +1,47 @@ +<Type Name="ITemplatedItemsListScrollToRequestedEventArgs" FullName="Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs"> + <TypeSignature Language="C#" Value="public interface ITemplatedItemsListScrollToRequestedEventArgs" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITemplatedItemsListScrollToRequestedEventArgs" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <Interfaces /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="Group"> + <MemberSignature Language="C#" Value="public object Group { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance object Group" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Object</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Item"> + <MemberSignature Language="C#" Value="public object Item { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance object Item" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Object</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsList`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsList`1.xml new file mode 100644 index 00000000..d3e6f449 --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsList`1.xml @@ -0,0 +1,334 @@ +<Type Name="ITemplatedItemsList<TItem>" FullName="Xamarin.Forms.ITemplatedItemsList<TItem>"> + <TypeSignature Language="C#" Value="public interface ITemplatedItemsList<TItem> : System.Collections.Generic.IEnumerable<TItem>, System.Collections.Generic.IReadOnlyCollection<TItem>, System.Collections.Generic.IReadOnlyList<TItem>, System.Collections.Specialized.INotifyCollectionChanged where TItem : BindableObject" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITemplatedItemsList`1<(class Xamarin.Forms.BindableObject) TItem> implements class System.Collections.Generic.IEnumerable`1<!TItem>, class System.Collections.Generic.IReadOnlyCollection`1<!TItem>, class System.Collections.Generic.IReadOnlyList`1<!TItem>, class System.Collections.IEnumerable, class System.Collections.Specialized.INotifyCollectionChanged" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <TypeParameters> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Interfaces> + <Interface> + <InterfaceName>System.Collections.Generic.IEnumerable<TItem></InterfaceName> + </Interface> + <Interface> + <InterfaceName>System.Collections.Generic.IReadOnlyCollection<TItem></InterfaceName> + </Interface> + <Interface> + <InterfaceName>System.Collections.Generic.IReadOnlyList<TItem></InterfaceName> + </Interface> + <Interface> + <InterfaceName>System.Collections.Specialized.INotifyCollectionChanged</InterfaceName> + </Interface> + </Interfaces> + <Docs> + <typeparam name="TItem">To be added.</typeparam> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="BindingContext"> + <MemberSignature Language="C#" Value="public object BindingContext { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance object BindingContext" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Object</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetGlobalIndexForGroup"> + <MemberSignature Language="C#" Value="public int GetGlobalIndexForGroup (Xamarin.Forms.ITemplatedItemsList<TItem> group);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 GetGlobalIndexForGroup(class Xamarin.Forms.ITemplatedItemsList`1<!TItem> group) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="group" Type="Xamarin.Forms.ITemplatedItemsList<TItem>" /> + </Parameters> + <Docs> + <param name="group">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetGlobalIndexOfItem"> + <MemberSignature Language="C#" Value="public int GetGlobalIndexOfItem (object item);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 GetGlobalIndexOfItem(object item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="item" Type="System.Object" /> + </Parameters> + <Docs> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetGroup"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.ITemplatedItemsList<TItem> GetGroup (int index);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.ITemplatedItemsList`1<!TItem> GetGroup(int32 index) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ITemplatedItemsList<TItem></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="index" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="index">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetGroupAndIndexOfItem"> + <MemberSignature Language="C#" Value="public Tuple<int,int> GetGroupAndIndexOfItem (object item);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Tuple`2<int32, int32> GetGroupAndIndexOfItem(object item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Tuple<System.Int32,System.Int32></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="item" Type="System.Object" /> + </Parameters> + <Docs> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetGroupAndIndexOfItem"> + <MemberSignature Language="C#" Value="public Tuple<int,int> GetGroupAndIndexOfItem (object group, object item);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Tuple`2<int32, int32> GetGroupAndIndexOfItem(object group, object item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Tuple<System.Int32,System.Int32></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="group" Type="System.Object" /> + <Parameter Name="item" Type="System.Object" /> + </Parameters> + <Docs> + <param name="group">To be added.</param> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GetGroupIndexFromGlobal"> + <MemberSignature Language="C#" Value="public int GetGroupIndexFromGlobal (int globalIndex, out int leftOver);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 GetGroupIndexFromGlobal(int32 globalIndex, int32 leftOver) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="globalIndex" Type="System.Int32" /> + <Parameter Name="leftOver" Type="System.Int32&" RefType="out" /> + </Parameters> + <Docs> + <param name="globalIndex">To be added.</param> + <param name="leftOver">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="GroupedCollectionChanged"> + <MemberSignature Language="C#" Value="public event System.Collections.Specialized.NotifyCollectionChangedEventHandler GroupedCollectionChanged;" /> + <MemberSignature Language="ILAsm" Value=".event class System.Collections.Specialized.NotifyCollectionChangedEventHandler GroupedCollectionChanged" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.Specialized.NotifyCollectionChangedEventHandler</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="HeaderContent"> + <MemberSignature Language="C#" Value="public TItem HeaderContent { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance !TItem HeaderContent" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>TItem</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="IndexOf"> + <MemberSignature Language="C#" Value="public int IndexOf (TItem item);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 IndexOf(!TItem item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="item" Type="TItem" /> + </Parameters> + <Docs> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="ItemsSource"> + <MemberSignature Language="C#" Value="public System.Collections.IEnumerable ItemsSource { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.IEnumerable ItemsSource" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.IEnumerable</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Name"> + <MemberSignature Language="C#" Value="public string Name { get; set; }" /> + <MemberSignature Language="ILAsm" Value=".property instance string Name" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="PropertyChanged"> + <MemberSignature Language="C#" Value="public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;" /> + <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.PropertyChangedEventHandler PropertyChanged" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.ComponentModel.PropertyChangedEventHandler</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="ShortNames"> + <MemberSignature Language="C#" Value="public System.Collections.Generic.IReadOnlyList<string> ShortNames { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IReadOnlyList`1<string> ShortNames" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Collections.Generic.IReadOnlyList<System.String></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="UpdateContent"> + <MemberSignature Language="C#" Value="public TItem UpdateContent (TItem content, int index);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !TItem UpdateContent(!TItem content, int32 index) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>TItem</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="content" Type="TItem" /> + <Parameter Name="index" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="content">To be added.</param> + <param name="index">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="UpdateHeader"> + <MemberSignature Language="C#" Value="public TItem UpdateHeader (TItem content, int groupIndex);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !TItem UpdateHeader(!TItem content, int32 groupIndex) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>TItem</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="content" Type="TItem" /> + <Parameter Name="groupIndex" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="content">To be added.</param> + <param name="groupIndex">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsView`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsView`1.xml new file mode 100644 index 00000000..4ab622cb --- /dev/null +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsView`1.xml @@ -0,0 +1,74 @@ +<Type Name="ITemplatedItemsView<TItem>" FullName="Xamarin.Forms.ITemplatedItemsView<TItem>"> + <TypeSignature Language="C#" Value="public interface ITemplatedItemsView<TItem> : Xamarin.Forms.IItemsView<TItem> where TItem : BindableObject" /> + <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITemplatedItemsView`1<(class Xamarin.Forms.BindableObject) TItem> implements class Xamarin.Forms.IItemsView`1<!TItem>" /> + <AssemblyInfo> + <AssemblyName>Xamarin.Forms.Core</AssemblyName> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <TypeParameters> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IItemsView<TItem></InterfaceName> + </Interface> + </Interfaces> + <Docs> + <typeparam name="TItem">To be added.</typeparam> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + <Members> + <Member MemberName="ListProxy"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.IListProxy ListProxy { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.IListProxy ListProxy" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IListProxy</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="PropertyChanged"> + <MemberSignature Language="C#" Value="public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;" /> + <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.PropertyChangedEventHandler PropertyChanged" /> + <MemberType>Event</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.ComponentModel.PropertyChangedEventHandler</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="TemplatedItems"> + <MemberSignature Language="C#" Value="public Xamarin.Forms.ITemplatedItemsList<TItem> TemplatedItems { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.ITemplatedItemsList`1<!TItem> TemplatedItems" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ITemplatedItemsList<TItem></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + </Members> +</Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ItemsView`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ItemsView`1.xml index 31bd14aa..a930ab30 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/ItemsView`1.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ItemsView`1.xml @@ -1,6 +1,6 @@ <Type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/mono/mono/master/mcs/tools/mdoc/Resources/monodoc-ecma.xsd" Name="ItemsView<TVisual>" FullName="Xamarin.Forms.ItemsView<TVisual>"> - <TypeSignature Language="C#" Value="public abstract class ItemsView<TVisual> : Xamarin.Forms.View where TVisual : BindableObject" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit ItemsView`1<(class Xamarin.Forms.BindableObject) TVisual> extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public abstract class ItemsView<TVisual> : Xamarin.Forms.View, Xamarin.Forms.IItemsView<TVisual>, Xamarin.Forms.ITemplatedItemsView<TVisual> where TVisual : BindableObject" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit ItemsView`1<(class Xamarin.Forms.BindableObject) TVisual> extends Xamarin.Forms.View implements class Xamarin.Forms.IItemsView`1<!TVisual>, class Xamarin.Forms.ITemplatedItemsView`1<!TVisual>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -22,6 +22,12 @@ <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IItemsView<TVisual></InterfaceName> + </Interface> + <Interface> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TVisual></InterfaceName> + </Interface> </Interfaces> <Docs> <typeparam name="TVisual">The type of visual that the <see cref="P:Xamarin.Forms.ItemsView{TVisual}.ItemsSource" /> items will be templated into.</typeparam> @@ -334,5 +340,37 @@ void SetupView() <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.ITemplatedItemsView<TVisual>.ListProxy"> + <MemberSignature Language="C#" Value="Xamarin.Forms.IListProxy Xamarin.Forms.ITemplatedItemsView<TVisual>.ListProxy { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.IListProxy Xamarin.Forms.ITemplatedItemsView<TVisual>.ListProxy" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.IListProxy</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.ITemplatedItemsView<TVisual>.TemplatedItems"> + <MemberSignature Language="C#" Value="Xamarin.Forms.ITemplatedItemsList<TVisual> Xamarin.Forms.ITemplatedItemsView<TVisual>.TemplatedItems { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.ITemplatedItemsList`1<!TVisual> Xamarin.Forms.ITemplatedItemsView<TVisual>.TemplatedItems" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ITemplatedItemsList<TVisual></ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml index f1a600d2..950e2530 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml @@ -1,6 +1,6 @@ <Type Name="ListView" FullName="Xamarin.Forms.ListView"> - <TypeSignature Language="C#" Value="public class ListView : Xamarin.Forms.ItemsView<Xamarin.Forms.Cell>" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ListView extends Xamarin.Forms.ItemsView`1<class Xamarin.Forms.Cell> implements class Xamarin.Forms.IElementController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> + <TypeSignature Language="C#" Value="public class ListView : Xamarin.Forms.ItemsView<Xamarin.Forms.Cell>, Xamarin.Forms.IListViewController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ListView extends Xamarin.Forms.ItemsView`1<class Xamarin.Forms.Cell> implements class Xamarin.Forms.IElementController, class Xamarin.Forms.IListViewController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -19,6 +19,9 @@ </BaseTypeArguments> </Base> <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IListViewController</InterfaceName> + </Interface> </Interfaces> <Attributes> <Attribute> @@ -1468,6 +1471,42 @@ ListView CreateListView() <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.IListViewController.CachingStrategy"> + <MemberSignature Language="C#" Value="Xamarin.Forms.ListViewCachingStrategy Xamarin.Forms.IListViewController.CachingStrategy { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance valuetype Xamarin.Forms.ListViewCachingStrategy Xamarin.Forms.IListViewController.CachingStrategy" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ListViewCachingStrategy</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.IListViewController.CreateDefaultCell"> + <MemberSignature Language="C#" Value="Xamarin.Forms.Cell IListViewController.CreateDefaultCell (object item);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class Xamarin.Forms.Cell Xamarin.Forms.IListViewController.CreateDefaultCell(object item) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.Cell</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="item" Type="System.Object" /> + </Parameters> + <Docs> + <param name="item">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Xamarin.Forms.IListViewController.FooterElement"> <MemberSignature Language="C#" Value="Xamarin.Forms.Element Xamarin.Forms.IListViewController.FooterElement { get; }" /> <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Element Xamarin.Forms.IListViewController.FooterElement" /> @@ -1487,6 +1526,26 @@ ListView CreateListView() <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.IListViewController.GetDisplayTextFromGroup"> + <MemberSignature Language="C#" Value="string IListViewController.GetDisplayTextFromGroup (object cell);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance string Xamarin.Forms.IListViewController.GetDisplayTextFromGroup(object cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="System.Object" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Xamarin.Forms.IListViewController.HeaderElement"> <MemberSignature Language="C#" Value="Xamarin.Forms.Element Xamarin.Forms.IListViewController.HeaderElement { get; }" /> <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.Element Xamarin.Forms.IListViewController.HeaderElement" /> @@ -1506,6 +1565,104 @@ ListView CreateListView() <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.IListViewController.NotifyRowTapped"> + <MemberSignature Language="C#" Value="void IListViewController.NotifyRowTapped (int index, Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.IListViewController.NotifyRowTapped(int32 index, class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="index" Type="System.Int32" /> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="index">To be added.</param> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.IListViewController.NotifyRowTapped"> + <MemberSignature Language="C#" Value="void IListViewController.NotifyRowTapped (int index, int inGroupIndex, Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.IListViewController.NotifyRowTapped(int32 index, int32 inGroupIndex, class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="index" Type="System.Int32" /> + <Parameter Name="inGroupIndex" Type="System.Int32" /> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="index">To be added.</param> + <param name="inGroupIndex">To be added.</param> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.IListViewController.RefreshAllowed"> + <MemberSignature Language="C#" Value="bool Xamarin.Forms.IListViewController.RefreshAllowed { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool Xamarin.Forms.IListViewController.RefreshAllowed" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.IListViewController.SendCellAppearing"> + <MemberSignature Language="C#" Value="void IListViewController.SendCellAppearing (Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.IListViewController.SendCellAppearing(class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.IListViewController.SendCellDisappearing"> + <MemberSignature Language="C#" Value="void IListViewController.SendCellDisappearing (Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.IListViewController.SendCellDisappearing(class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="Xamarin.Forms.IListViewController.SendRefreshing"> <MemberSignature Language="C#" Value="void IListViewController.SendRefreshing ();" /> <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.IListViewController.SendRefreshing() cil managed" /> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/MenuItem.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/MenuItem.xml index 19b4049f..ed418dd5 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/MenuItem.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/MenuItem.xml @@ -1,6 +1,6 @@ <Type Name="MenuItem" FullName="Xamarin.Forms.MenuItem"> - <TypeSignature Language="C#" Value="public class MenuItem : Xamarin.Forms.BaseMenuItem" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MenuItem extends Xamarin.Forms.BaseMenuItem" /> + <TypeSignature Language="C#" Value="public class MenuItem : Xamarin.Forms.BaseMenuItem, Xamarin.Forms.IMenuItemController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MenuItem extends Xamarin.Forms.BaseMenuItem implements class Xamarin.Forms.IMenuItemController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.3.0.0</AssemblyVersion> @@ -11,7 +11,11 @@ <Base> <BaseTypeName>Xamarin.Forms.BaseMenuItem</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.IMenuItemController</InterfaceName> + </Interface> + </Interfaces> <Docs> <summary>Class that presents a menu item and associates it with a command.</summary> <remarks> @@ -293,5 +297,53 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.IMenuItemController.Activate"> + <MemberSignature Language="C#" Value="void IMenuItemController.Activate ();" /> + <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void Xamarin.Forms.IMenuItemController.Activate() cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.IMenuItemController.IsEnabled"> + <MemberSignature Language="C#" Value="bool Xamarin.Forms.IMenuItemController.IsEnabled { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance bool Xamarin.Forms.IMenuItemController.IsEnabled" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.IMenuItemController.IsEnabledPropertyName"> + <MemberSignature Language="C#" Value="string Xamarin.Forms.IMenuItemController.IsEnabledPropertyName { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance string Xamarin.Forms.IMenuItemController.IsEnabledPropertyName" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.String</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/MultiPage`1.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/MultiPage`1.xml index a0c863de..3057f344 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/MultiPage`1.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/MultiPage`1.xml @@ -1,6 +1,6 @@ <Type Name="MultiPage<T>" FullName="Xamarin.Forms.MultiPage<T>"> - <TypeSignature Language="C#" Value="public abstract class MultiPage<T> : Xamarin.Forms.Page, Xamarin.Forms.IPageContainer<T>, Xamarin.Forms.IViewContainer<T> where T : Page" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit MultiPage`1<(class Xamarin.Forms.Page) T> extends Xamarin.Forms.Page implements class Xamarin.Forms.IPageContainer`1<!T>, class Xamarin.Forms.IViewContainer`1<!T>" /> + <TypeSignature Language="C#" Value="public abstract class MultiPage<T> : Xamarin.Forms.Page, Xamarin.Forms.IItemsView<T>, Xamarin.Forms.IPageContainer<T>, Xamarin.Forms.IViewContainer<T> where T : Page" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit MultiPage`1<(class Xamarin.Forms.Page) T> extends Xamarin.Forms.Page implements class Xamarin.Forms.IItemsView`1<!T>, class Xamarin.Forms.IPageContainer`1<!T>, class Xamarin.Forms.IViewContainer`1<!T>" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -23,6 +23,9 @@ </Base> <Interfaces> <Interface> + <InterfaceName>Xamarin.Forms.IItemsView<T></InterfaceName> + </Interface> + <Interface> <InterfaceName>Xamarin.Forms.IPageContainer<T></InterfaceName> </Interface> <Interface> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollToRequestedEventArgs.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollToRequestedEventArgs.xml index a734af84..3e6ce982 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollToRequestedEventArgs.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollToRequestedEventArgs.xml @@ -1,6 +1,6 @@ <Type Name="ScrollToRequestedEventArgs" FullName="Xamarin.Forms.ScrollToRequestedEventArgs"> - <TypeSignature Language="C#" Value="public class ScrollToRequestedEventArgs : EventArgs" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ScrollToRequestedEventArgs extends System.EventArgs" /> + <TypeSignature Language="C#" Value="public class ScrollToRequestedEventArgs : EventArgs, Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ScrollToRequestedEventArgs extends System.EventArgs implements class Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.4.0.0</AssemblyVersion> @@ -10,7 +10,11 @@ <Base> <BaseTypeName>System.EventArgs</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs</InterfaceName> + </Interface> + </Interfaces> <Docs> <summary>Arguments for the event that is raised when a scroll is requested.</summary> <remarks>To be added.</remarks> @@ -124,5 +128,37 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs.Group"> + <MemberSignature Language="C#" Value="object Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs.Group { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance object Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs.Group" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Object</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> + <Member MemberName="Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs.Item"> + <MemberSignature Language="C#" Value="object Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs.Item { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance object Xamarin.Forms.ITemplatedItemsListScrollToRequestedEventArgs.Item" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Object</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml b/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml index c0f6959a..1ac76588 100644 --- a/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml +++ b/docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml @@ -1,6 +1,6 @@ <Type Name="TableView" FullName="Xamarin.Forms.TableView"> - <TypeSignature Language="C#" Value="public class TableView : Xamarin.Forms.View" /> - <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TableView extends Xamarin.Forms.View" /> + <TypeSignature Language="C#" Value="public class TableView : Xamarin.Forms.View, Xamarin.Forms.ITableViewController" /> + <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TableView extends Xamarin.Forms.View implements class Xamarin.Forms.ITableViewController" /> <AssemblyInfo> <AssemblyName>Xamarin.Forms.Core</AssemblyName> <AssemblyVersion>1.0.0.0</AssemblyVersion> @@ -14,7 +14,11 @@ <Base> <BaseTypeName>Xamarin.Forms.View</BaseTypeName> </Base> - <Interfaces /> + <Interfaces> + <Interface> + <InterfaceName>Xamarin.Forms.ITableViewController</InterfaceName> + </Interface> + </Interfaces> <Attributes> <Attribute> <AttributeName>Xamarin.Forms.ContentProperty("Root")</AttributeName> @@ -351,5 +355,21 @@ public class App : Application <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="Xamarin.Forms.ITableViewController.Model"> + <MemberSignature Language="C#" Value="Xamarin.Forms.ITableModel Xamarin.Forms.ITableViewController.Model { get; }" /> + <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.ITableModel Xamarin.Forms.ITableViewController.Model" /> + <MemberType>Property</MemberType> + <AssemblyInfo> + <AssemblyVersion>2.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>Xamarin.Forms.ITableModel</ReturnType> + </ReturnValue> + <Docs> + <summary>To be added.</summary> + <value>To be added.</value> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/docs/Xamarin.Forms.Core/index.xml b/docs/Xamarin.Forms.Core/index.xml index 4109038b..a33a6699 100644 --- a/docs/Xamarin.Forms.Core/index.xml +++ b/docs/Xamarin.Forms.Core/index.xml @@ -129,6 +129,9 @@ <AttributeName>System.Runtime.CompilerServices.InternalsVisibleTo("Xamarin.Forms.Pages.UnitTests")</AttributeName> </Attribute> <Attribute> + <AttributeName>System.Runtime.CompilerServices.InternalsVisibleTo("Xamarin.Forms.CarouselView")</AttributeName> + </Attribute> + <Attribute> <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName> </Attribute> <Attribute> @@ -249,22 +252,30 @@ <Type Name="IAppLinkEntry" Kind="Interface" /> <Type Name="IAppLinks" Kind="Interface" /> <Type Name="IButtonController" Kind="Interface" /> + <Type Name="ICellController" Kind="Interface" /> <Type Name="IDefinition" Kind="Interface" /> <Type Name="IEffectControlProvider" Kind="Interface" /> <Type Name="IElementController" Kind="Interface" /> + <Type Name="IEntryCellController" Kind="Interface" /> <Type Name="IEntryController" Kind="Interface" /> <Type Name="IExtendedTypeConverter" Kind="Interface" /> <Type Name="IGestureRecognizer" Kind="Interface" /> <Type Name="IImageController" Kind="Interface" /> + <Type Name="IItemsView`1" DisplayName="IItemsView<T>" Kind="Interface" /> <Type Name="IItemViewController" Kind="Interface" /> <Type Name="ILayout" Kind="Interface" /> <Type Name="ILayoutController" Kind="Interface" /> + <Type Name="IListProxy" Kind="Interface" /> + <Type Name="IListViewController" Kind="Interface" /> <Type Name="Image" Kind="Class" /> <Type Name="ImageCell" Kind="Class" /> <Type Name="ImageSource" Kind="Class" /> <Type Name="ImageSourceConverter" Kind="Class" /> + <Type Name="IMasterDetailPageController" Kind="Interface" /> + <Type Name="IMenuItemController" Kind="Interface" /> <Type Name="INativeElementView" Kind="Interface" /> <Type Name="INavigation" Kind="Interface" /> + <Type Name="INavigationPageController" Kind="Interface" /> <Type Name="InputView" Kind="Class" /> <Type Name="IOpenGlViewController" Kind="Interface" /> <Type Name="IOpenGLViewController" Kind="Interface" /> @@ -274,6 +285,12 @@ <Type Name="IRegisterable" Kind="Interface" /> <Type Name="IScrollViewController" Kind="Interface" /> <Type Name="ISearchBarController" Kind="Interface" /> + <Type Name="IStreamImageSource" Kind="Interface" /> + <Type Name="ITableModel" Kind="Interface" /> + <Type Name="ITableViewController" Kind="Interface" /> + <Type Name="ITemplatedItemsList`1" DisplayName="ITemplatedItemsList<TItem>" Kind="Interface" /> + <Type Name="ITemplatedItemsListScrollToRequestedEventArgs" Kind="Interface" /> + <Type Name="ITemplatedItemsView`1" DisplayName="ITemplatedItemsView<TItem>" Kind="Interface" /> <Type Name="ItemsView`1" DisplayName="ItemsView<TVisual>" Kind="Class" /> <Type Name="ItemTappedEventArgs" Kind="Class" /> <Type Name="ItemVisibilityEventArgs" Kind="Class" /> @@ -413,6 +430,7 @@ <Type Name="WebViewSourceTypeConverter" Kind="Class" /> </Namespace> <Namespace Name="Xamarin.Forms.Internals"> + <Type Name="CellExtensions" Kind="Class" /> <Type Name="DynamicResource" Kind="Class" /> <Type Name="EvalRequested" Kind="Class" /> <Type Name="IDataTemplate" Kind="Interface" /> @@ -420,8 +438,12 @@ <Type Name="INameScope" Kind="Interface" /> <Type Name="InvalidationTrigger" Kind="Enumeration" /> <Type Name="NameScope" Kind="Class" /> + <Type Name="NavigationRequestedEventArgs" Kind="Class" /> + <Type Name="NotifyCollectionChangedEventArgsEx" Kind="Class" /> + <Type Name="NotifyCollectionChangedEventArgsExtensions" Kind="Class" /> <Type Name="PreserveAttribute" Kind="Class" /> <Type Name="Ticker" Kind="Class" /> + <Type Name="ToolbarTracker" Kind="Class" /> </Namespace> <Namespace Name="Xamarin.Forms.Xaml"> <Type Name="IMarkupExtension" Kind="Interface" /> @@ -732,6 +754,288 @@ </ExtensionMethod> <ExtensionMethod> <Targets> + <Target Type="T:Xamarin.Forms.BindableObject" /> + </Targets> + <Member MemberName="GetGroup<TView,TItem>"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.ITemplatedItemsList<TItem> GetGroup<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.ITemplatedItemsList`1<!!TItem> GetGroup<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.ITemplatedItemsList<TItem></ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.CellExtensions" Member="M:Xamarin.Forms.Internals.CellExtensions.GetGroup``2(``1)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.BindableObject" /> + </Targets> + <Member MemberName="GetGroupHeaderContent<TView,TItem>"> + <MemberSignature Language="C#" Value="public static TItem GetGroupHeaderContent<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TItem GetGroupHeaderContent<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>TItem</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.CellExtensions" Member="M:Xamarin.Forms.Internals.CellExtensions.GetGroupHeaderContent``2(``1)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.BindableObject" /> + </Targets> + <Member MemberName="GetIndex<TView,TItem>"> + <MemberSignature Language="C#" Value="public static int GetIndex<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetIndex<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Int32</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.CellExtensions" Member="M:Xamarin.Forms.Internals.CellExtensions.GetIndex``2(``1)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.BindableObject" /> + </Targets> + <Member MemberName="GetIsGroupHeader<TView,TItem>"> + <MemberSignature Language="C#" Value="public static bool GetIsGroupHeader<TView,TItem> (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool GetIsGroupHeader<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Boolean</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.CellExtensions" Member="M:Xamarin.Forms.Internals.CellExtensions.GetIsGroupHeader``2(``1)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.Cell" /> + </Targets> + <Member MemberName="GetPath"> + <MemberSignature Language="C#" Value="public static Tuple<int,int> GetPath (this Xamarin.Forms.Cell cell);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Tuple`2<int32, int32> GetPath(class Xamarin.Forms.Cell cell) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Tuple<System.Int32,System.Int32></ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="cell" Type="Xamarin.Forms.Cell" RefType="this" /> + </Parameters> + <Docs> + <param name="cell">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.CellExtensions" Member="M:Xamarin.Forms.Internals.CellExtensions.GetPath(Xamarin.Forms.Cell)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:Xamarin.Forms.BindableObject" /> + </Targets> + <Member MemberName="SetIsGroupHeader<TView,TItem>"> + <MemberSignature Language="C#" Value="public static void SetIsGroupHeader<TView,TItem> (this TItem cell, bool value) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView<TItem> where TItem : Xamarin.Forms.BindableObject;" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetIsGroupHeader<(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1<!!TItem>) TView, (class Xamarin.Forms.BindableObject) TItem>(!!TItem cell, bool value) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TView"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + <InterfaceName>Xamarin.Forms.ITemplatedItemsView<TItem></InterfaceName> + </Constraints> + </TypeParameter> + <TypeParameter Name="TItem"> + <Constraints> + <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName> + </Constraints> + </TypeParameter> + </TypeParameters> + <Parameters> + <Parameter Name="cell" Type="TItem" RefType="this" /> + <Parameter Name="value" Type="System.Boolean" /> + </Parameters> + <Docs> + <typeparam name="TView">To be added.</typeparam> + <typeparam name="TItem">To be added.</typeparam> + <param name="cell">To be added.</param> + <param name="value">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.CellExtensions" Member="M:Xamarin.Forms.Internals.CellExtensions.SetIsGroupHeader``2(``1,System.Boolean)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs" /> + </Targets> + <Member MemberName="Apply"> + <MemberSignature Language="C#" Value="public static System.Collections.Specialized.NotifyCollectionChangedAction Apply (this System.Collections.Specialized.NotifyCollectionChangedEventArgs self, Action<object,int,bool> insert, Action<object,int> removeAt, Action reset);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype System.Collections.Specialized.NotifyCollectionChangedAction Apply(class System.Collections.Specialized.NotifyCollectionChangedEventArgs self, class System.Action`3<object, int32, bool> insert, class System.Action`2<object, int32> removeAt, class System.Action reset) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Collections.Specialized.NotifyCollectionChangedAction</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="self" Type="System.Collections.Specialized.NotifyCollectionChangedEventArgs" RefType="this" /> + <Parameter Name="insert" Type="System.Action<System.Object,System.Int32,System.Boolean>" /> + <Parameter Name="removeAt" Type="System.Action<System.Object,System.Int32>" /> + <Parameter Name="reset" Type="System.Action" /> + </Parameters> + <Docs> + <param name="self">To be added.</param> + <param name="insert">To be added.</param> + <param name="removeAt">To be added.</param> + <param name="reset">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsExtensions" Member="M:Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsExtensions.Apply(System.Collections.Specialized.NotifyCollectionChangedEventArgs,System.Action{System.Object,System.Int32,System.Boolean},System.Action{System.Object,System.Int32},System.Action)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs" /> + </Targets> + <Member MemberName="Apply<TFrom>"> + <MemberSignature Language="C#" Value="public static void Apply<TFrom> (this System.Collections.Specialized.NotifyCollectionChangedEventArgs self, System.Collections.Generic.IList<TFrom> from, System.Collections.Generic.IList<object> to);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Apply<TFrom>(class System.Collections.Specialized.NotifyCollectionChangedEventArgs self, class System.Collections.Generic.IList`1<!!TFrom> from, class System.Collections.Generic.IList`1<object> to) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <TypeParameters> + <TypeParameter Name="TFrom" /> + </TypeParameters> + <Parameters> + <Parameter Name="self" Type="System.Collections.Specialized.NotifyCollectionChangedEventArgs" RefType="this" /> + <Parameter Name="from" Type="System.Collections.Generic.IList<TFrom>" /> + <Parameter Name="to" Type="System.Collections.Generic.IList<System.Object>" /> + </Parameters> + <Docs> + <typeparam name="TFrom">To be added.</typeparam> + <param name="self">To be added.</param> + <param name="from">To be added.</param> + <param name="to">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsExtensions" Member="M:Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsExtensions.Apply``1(System.Collections.Specialized.NotifyCollectionChangedEventArgs,System.Collections.Generic.IList{``0},System.Collections.Generic.IList{System.Object})" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> + <Target Type="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs" /> + </Targets> + <Member MemberName="WithCount"> + <MemberSignature Language="C#" Value="public static Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsEx WithCount (this System.Collections.Specialized.NotifyCollectionChangedEventArgs e, int count);" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsEx WithCount(class System.Collections.Specialized.NotifyCollectionChangedEventArgs e, int32 count) cil managed" /> + <MemberType>ExtensionMethod</MemberType> + <ReturnValue> + <ReturnType>Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsEx</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="e" Type="System.Collections.Specialized.NotifyCollectionChangedEventArgs" RefType="this" /> + <Parameter Name="count" Type="System.Int32" /> + </Parameters> + <Docs> + <param name="e">To be added.</param> + <param name="count">To be added.</param> + <summary>To be added.</summary> + </Docs> + <Link Type="Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsExtensions" Member="M:Xamarin.Forms.Internals.NotifyCollectionChangedEventArgsExtensions.WithCount(System.Collections.Specialized.NotifyCollectionChangedEventArgs,System.Int32)" /> + </Member> + </ExtensionMethod> + <ExtensionMethod> + <Targets> <Target Type="T:Xamarin.Forms.Element" /> </Targets> <Member MemberName="FindByName<T>"> |