summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamantha Houts <samantha@teamredwall.com>2016-06-17 03:10:18 -0700
committerRui Marinho <me@ruimarinho.net>2016-06-17 11:10:18 +0100
commit925fc0aa588a060eb23fa16c1d225dd030012c23 (patch)
tree83676c25c29d97d9250516b217020ba85425796d
parentd44396a4534b1e2bc81143c809e4adaee656ab15 (diff)
downloadxamarin-forms-925fc0aa588a060eb23fa16c1d225dd030012c23.tar.gz
xamarin-forms-925fc0aa588a060eb23fa16c1d225dd030012c23.tar.bz2
xamarin-forms-925fc0aa588a060eb23fa16c1d225dd030012c23.zip
Prep Cell & friends for removal of InternalsVisibleTo (#142)
* Prep Cell & friends for removal of InternalsVisibleTo Includes: - Cell - EntryCell - ListView - MenuItem - TableView - ViewCell - Toolbar Moved extensions to Internal & removed TPH * Update docs * [Controls] Ignore Issue2411 on iOS <9 * [Controls] Formatting for Issue2411
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2411.cs230
-rw-r--r--Xamarin.Forms.Core.UnitTests/CellTests.cs8
-rw-r--r--Xamarin.Forms.Core.UnitTests/MenuItemTests.cs6
-rw-r--r--Xamarin.Forms.Core.UnitTests/NotifyCollectionChangedEventArgsExtensionsTests.cs1
-rw-r--r--Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs1
-rw-r--r--Xamarin.Forms.Core/Cells/Cell.cs15
-rw-r--r--Xamarin.Forms.Core/Cells/EntryCell.cs4
-rw-r--r--Xamarin.Forms.Core/Cells/ICellController.cs15
-rw-r--r--Xamarin.Forms.Core/Cells/IEntryCellController.cs8
-rw-r--r--Xamarin.Forms.Core/IItemsView.cs5
-rw-r--r--Xamarin.Forms.Core/IListProxy.cs12
-rw-r--r--Xamarin.Forms.Core/IListViewController.cs15
-rw-r--r--Xamarin.Forms.Core/IMenuItemController.cs10
-rw-r--r--Xamarin.Forms.Core/ITableModel.cs16
-rw-r--r--Xamarin.Forms.Core/ITableViewController.cs11
-rw-r--r--Xamarin.Forms.Core/ITemplatedItemsList.cs30
-rw-r--r--Xamarin.Forms.Core/ITemplatedItemsListScrollToRequestedEventArgs.cs13
-rw-r--r--Xamarin.Forms.Core/ITemplatedItemsView.cs12
-rw-r--r--Xamarin.Forms.Core/Internals/CellExtensions.cs38
-rw-r--r--Xamarin.Forms.Core/Internals/NotifyCollectionChangedEventArgsEx.cs (renamed from Xamarin.Forms.Core/NotifyCollectionChangedEventArgsEx.cs)4
-rw-r--r--Xamarin.Forms.Core/Internals/NotifyCollectionChangedEventArgsExtensions.cs (renamed from Xamarin.Forms.Core/NotifyCollectionChangedEventArgsExtensions.cs)4
-rw-r--r--Xamarin.Forms.Core/Internals/ToolbarTracker.cs (renamed from Xamarin.Forms.Core/ToolbarTracker.cs)4
-rw-r--r--Xamarin.Forms.Core/ItemsView.cs8
-rw-r--r--Xamarin.Forms.Core/ListProxy.cs3
-rw-r--r--Xamarin.Forms.Core/ListView.cs45
-rw-r--r--Xamarin.Forms.Core/MenuItem.cs20
-rw-r--r--Xamarin.Forms.Core/ScrollToRequestedEventArgs.cs17
-rw-r--r--Xamarin.Forms.Core/TableModel.cs2
-rw-r--r--Xamarin.Forms.Core/TableView.cs15
-rw-r--r--Xamarin.Forms.Core/TemplatedItemsList.cs45
-rw-r--r--Xamarin.Forms.Core/Xamarin.Forms.Core.csproj24
-rw-r--r--Xamarin.Forms.Pages.UnitTests/Xamarin.Forms.Pages.UnitTests.csproj3
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs9
-rw-r--r--Xamarin.Forms.Platform.Android/CellAdapter.cs4
-rw-r--r--Xamarin.Forms.Platform.Android/Cells/BaseCellView.cs1
-rw-r--r--Xamarin.Forms.Platform.Android/Cells/CellFactory.cs1
-rw-r--r--Xamarin.Forms.Platform.Android/Cells/CellRenderer.cs13
-rw-r--r--Xamarin.Forms.Platform.Android/Cells/EntryCellRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/Cells/TextCellRenderer.cs3
-rw-r--r--Xamarin.Forms.Platform.Android/Cells/ViewCellRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.Android/Platform.cs10
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ListViewAdapter.cs69
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs25
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/TableViewModelRenderer.cs32
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ToolbarButton.cs9
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs9
-rw-r--r--Xamarin.Forms.Platform.UAP/TabbedPageRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.WP8/CarouselPageRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.WP8/CellControl.cs7
-rw-r--r--Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs7
-rw-r--r--Xamarin.Forms.Platform.WP8/CustomContextMenu.cs2
-rw-r--r--Xamarin.Forms.Platform.WP8/ListViewRenderer.cs47
-rw-r--r--Xamarin.Forms.Platform.WP8/Platform.cs16
-rw-r--r--Xamarin.Forms.Platform.WP8/TableViewRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.WP8/TextCellRenderer.cs5
-rw-r--r--Xamarin.Forms.Platform.WinRT.Phone/TabbedPageRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.WinRT.Tablet/TabbedPageRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.WinRT/CarouselPageRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.WinRT/CellControl.cs40
-rw-r--r--Xamarin.Forms.Platform.WinRT/EntryCellTextBox.cs2
-rw-r--r--Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs88
-rw-r--r--Xamarin.Forms.Platform.WinRT/MenuItemCommand.cs5
-rw-r--r--Xamarin.Forms.Platform.WinRT/Platform.cs1
-rw-r--r--Xamarin.Forms.Platform.WinRT/TableViewRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.WinRT/TextCellRenderer.cs5
-rw-r--r--Xamarin.Forms.Platform.iOS/Cells/CellRenderer.cs7
-rw-r--r--Xamarin.Forms.Platform.iOS/Cells/CellTableViewCell.cs14
-rw-r--r--Xamarin.Forms.Platform.iOS/Cells/EntryCellRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.iOS/Cells/ImageCellRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.iOS/Cells/ViewCellRenderer.cs12
-rw-r--r--Xamarin.Forms.Platform.iOS/ContextActionCell.cs16
-rw-r--r--Xamarin.Forms.Platform.iOS/Extensions/CellExtensions.cs9
-rw-r--r--Xamarin.Forms.Platform.iOS/Extensions/ToolbarItemExtensions.cs15
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/ListViewRenderer.cs128
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/NavigationRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/TabbedRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/TableViewModelRenderer.cs23
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/CellExtensions.xml214
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsEx.xml276
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/NotifyCollectionChangedEventArgsExtensions.xml93
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms.Internals/ToolbarTracker.xml (renamed from docs/Xamarin.Forms.Core/Xamarin.Forms/NavigationRequestedEventArgs.xml)86
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/Cell.xml42
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/EntryCell.xml26
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ICellController.xml62
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/IEntryCellController.xml31
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/IItemsView`1.xml83
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/IListProxy.xml50
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/IListViewController.xml236
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/IMenuItemController.xml63
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/INavigationPageController.xml30
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ITableModel.xml214
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ITableViewController.xml46
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsListScrollToRequestedEventArgs.xml47
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsList`1.xml334
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ITemplatedItemsView`1.xml74
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ItemsView`1.xml42
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ListView.xml161
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/MenuItem.xml58
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/MultiPage`1.xml7
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/ScrollToRequestedEventArgs.xml42
-rw-r--r--docs/Xamarin.Forms.Core/Xamarin.Forms/TableView.xml26
-rw-r--r--docs/Xamarin.Forms.Core/index.xml304
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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static Xamarin.Forms.ITemplatedItemsList&lt;TItem&gt; GetGroup&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.ITemplatedItemsList`1&lt;!!TItem&gt; GetGroup&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!TItem cell) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Xamarin.Forms.ITemplatedItemsList&lt;TItem&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="TView">
+ <Constraints>
+ <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName>
+ <InterfaceName>Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static TItem GetGroupHeaderContent&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TItem GetGroupHeaderContent&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static int GetIndex&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetIndex&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static bool GetIsGroupHeader&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool GetIsGroupHeader&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;int,int&gt; GetPath (this Xamarin.Forms.Cell cell);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Tuple`2&lt;int32, int32&gt; GetPath(class Xamarin.Forms.Cell cell) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Tuple&lt;System.Int32,System.Int32&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static void SetIsGroupHeader&lt;TView,TItem&gt; (this TItem cell, bool value) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetIsGroupHeader&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;object,int,bool&gt; insert, Action&lt;object,int&gt; 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&lt;object, int32, bool&gt; insert, class System.Action`2&lt;object, int32&gt; 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&lt;System.Object,System.Int32,System.Boolean&gt;" />
+ <Parameter Name="removeAt" Type="System.Action&lt;System.Object,System.Int32&gt;" />
+ <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&lt;TFrom&gt;">
+ <MemberSignature Language="C#" Value="public static void Apply&lt;TFrom&gt; (this System.Collections.Specialized.NotifyCollectionChangedEventArgs self, System.Collections.Generic.IList&lt;TFrom&gt; from, System.Collections.Generic.IList&lt;object&gt; to);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Apply&lt;TFrom&gt;(class System.Collections.Specialized.NotifyCollectionChangedEventArgs self, class System.Collections.Generic.IList`1&lt;!!TFrom&gt; from, class System.Collections.Generic.IList`1&lt;object&gt; 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&lt;TFrom&gt;" />
+ <Parameter Name="to" Type="System.Collections.Generic.IList&lt;System.Object&gt;" />
+ </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&lt;Xamarin.Forms.Page&gt; AdditionalTargets { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IEnumerable`1&lt;class Xamarin.Forms.Page&gt; AdditionalTargets" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;Xamarin.Forms.Page&gt;</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&lt;bool&gt; Task { get; set; }" />
- <MemberSignature Language="ILAsm" Value=".property instance class System.Threading.Tasks.Task`1&lt;bool&gt; Task" />
+ <Member MemberName="ToolbarItems">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerable&lt;Xamarin.Forms.ToolbarItem&gt; ToolbarItems { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IEnumerable`1&lt;class Xamarin.Forms.ToolbarItem&gt; ToolbarItems" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
- <ReturnType>System.Threading.Tasks.Task&lt;System.Boolean&gt;</ReturnType>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;Xamarin.Forms.ToolbarItem&gt;</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&lt;T&gt;" FullName="Xamarin.Forms.IItemsView&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public interface IItemsView&lt;T&gt; where T : BindableObject" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IItemsView`1&lt;(class Xamarin.Forms.BindableObject) T&gt;" />
+ <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&lt;Xamarin.Forms.ScrollToRequestedEventArgs&gt; ScrollToRequested;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.ScrollToRequestedEventArgs&gt; ScrollToRequested" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.EventHandler&lt;Xamarin.Forms.ScrollToRequestedEventArgs&gt;</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&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt; InsertPageBeforeRequested;" />
- <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.NavigationRequestedEventArgs&gt; InsertPageBeforeRequested" />
+ <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; InsertPageBeforeRequested;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; InsertPageBeforeRequested" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
- <ReturnType>System.EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt;</ReturnType>
+ <ReturnType>System.EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt;</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
@@ -49,14 +49,14 @@
</Docs>
</Member>
<Member MemberName="PopRequested">
- <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt; PopRequested;" />
- <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.NavigationRequestedEventArgs&gt; PopRequested" />
+ <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; PopRequested;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; PopRequested" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
- <ReturnType>System.EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt;</ReturnType>
+ <ReturnType>System.EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt;</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
@@ -64,14 +64,14 @@
</Docs>
</Member>
<Member MemberName="PopToRootRequested">
- <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt; PopToRootRequested;" />
- <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.NavigationRequestedEventArgs&gt; PopToRootRequested" />
+ <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; PopToRootRequested;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; PopToRootRequested" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
- <ReturnType>System.EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt;</ReturnType>
+ <ReturnType>System.EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt;</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
@@ -79,14 +79,14 @@
</Docs>
</Member>
<Member MemberName="PushRequested">
- <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt; PushRequested;" />
- <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.NavigationRequestedEventArgs&gt; PushRequested" />
+ <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; PushRequested;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; PushRequested" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
- <ReturnType>System.EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt;</ReturnType>
+ <ReturnType>System.EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt;</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
@@ -94,14 +94,14 @@
</Docs>
</Member>
<Member MemberName="RemovePageRequested">
- <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt; RemovePageRequested;" />
- <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.NavigationRequestedEventArgs&gt; RemovePageRequested" />
+ <MemberSignature Language="C#" Value="public event EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; RemovePageRequested;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt; RemovePageRequested" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
- <ReturnType>System.EventHandler&lt;Xamarin.Forms.NavigationRequestedEventArgs&gt;</ReturnType>
+ <ReturnType>System.EventHandler&lt;Xamarin.Forms.Internals.NavigationRequestedEventArgs&gt;</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&lt;TItem&gt;" FullName="Xamarin.Forms.ITemplatedItemsList&lt;TItem&gt;">
+ <TypeSignature Language="C#" Value="public interface ITemplatedItemsList&lt;TItem&gt; : System.Collections.Generic.IEnumerable&lt;TItem&gt;, System.Collections.Generic.IReadOnlyCollection&lt;TItem&gt;, System.Collections.Generic.IReadOnlyList&lt;TItem&gt;, System.Collections.Specialized.INotifyCollectionChanged where TItem : BindableObject" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITemplatedItemsList`1&lt;(class Xamarin.Forms.BindableObject) TItem&gt; implements class System.Collections.Generic.IEnumerable`1&lt;!TItem&gt;, class System.Collections.Generic.IReadOnlyCollection`1&lt;!TItem&gt;, class System.Collections.Generic.IReadOnlyList`1&lt;!TItem&gt;, 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&lt;TItem&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IReadOnlyCollection&lt;TItem&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IReadOnlyList&lt;TItem&gt;</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&lt;TItem&gt; group);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance int32 GetGlobalIndexForGroup(class Xamarin.Forms.ITemplatedItemsList`1&lt;!TItem&gt; 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&lt;TItem&gt;" />
+ </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&lt;TItem&gt; GetGroup (int index);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Xamarin.Forms.ITemplatedItemsList`1&lt;!TItem&gt; GetGroup(int32 index) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Xamarin.Forms.ITemplatedItemsList&lt;TItem&gt;</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&lt;int,int&gt; GetGroupAndIndexOfItem (object item);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Tuple`2&lt;int32, int32&gt; GetGroupAndIndexOfItem(object item) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Tuple&lt;System.Int32,System.Int32&gt;</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&lt;int,int&gt; GetGroupAndIndexOfItem (object group, object item);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Tuple`2&lt;int32, int32&gt; GetGroupAndIndexOfItem(object group, object item) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Tuple&lt;System.Int32,System.Int32&gt;</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&amp;" 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&lt;string&gt; ShortNames { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Collections.Generic.IReadOnlyList`1&lt;string&gt; ShortNames" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IReadOnlyList&lt;System.String&gt;</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&lt;TItem&gt;" FullName="Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt;">
+ <TypeSignature Language="C#" Value="public interface ITemplatedItemsView&lt;TItem&gt; : Xamarin.Forms.IItemsView&lt;TItem&gt; where TItem : BindableObject" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract ITemplatedItemsView`1&lt;(class Xamarin.Forms.BindableObject) TItem&gt; implements class Xamarin.Forms.IItemsView`1&lt;!TItem&gt;" />
+ <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&lt;TItem&gt;</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&lt;TItem&gt; TemplatedItems { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.ITemplatedItemsList`1&lt;!TItem&gt; TemplatedItems" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Xamarin.Forms.ITemplatedItemsList&lt;TItem&gt;</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&lt;TVisual&gt;" FullName="Xamarin.Forms.ItemsView&lt;TVisual&gt;">
- <TypeSignature Language="C#" Value="public abstract class ItemsView&lt;TVisual&gt; : Xamarin.Forms.View where TVisual : BindableObject" />
- <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit ItemsView`1&lt;(class Xamarin.Forms.BindableObject) TVisual&gt; extends Xamarin.Forms.View" />
+ <TypeSignature Language="C#" Value="public abstract class ItemsView&lt;TVisual&gt; : Xamarin.Forms.View, Xamarin.Forms.IItemsView&lt;TVisual&gt;, Xamarin.Forms.ITemplatedItemsView&lt;TVisual&gt; where TVisual : BindableObject" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit ItemsView`1&lt;(class Xamarin.Forms.BindableObject) TVisual&gt; extends Xamarin.Forms.View implements class Xamarin.Forms.IItemsView`1&lt;!TVisual&gt;, class Xamarin.Forms.ITemplatedItemsView`1&lt;!TVisual&gt;" />
<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&lt;TVisual&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>Xamarin.Forms.ITemplatedItemsView&lt;TVisual&gt;</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&lt;TVisual&gt;.ListProxy">
+ <MemberSignature Language="C#" Value="Xamarin.Forms.IListProxy Xamarin.Forms.ITemplatedItemsView&lt;TVisual&gt;.ListProxy { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.IListProxy Xamarin.Forms.ITemplatedItemsView&lt;TVisual&gt;.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&lt;TVisual&gt;.TemplatedItems">
+ <MemberSignature Language="C#" Value="Xamarin.Forms.ITemplatedItemsList&lt;TVisual&gt; Xamarin.Forms.ITemplatedItemsView&lt;TVisual&gt;.TemplatedItems { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class Xamarin.Forms.ITemplatedItemsList`1&lt;!TVisual&gt; Xamarin.Forms.ITemplatedItemsView&lt;TVisual&gt;.TemplatedItems" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Xamarin.Forms.ITemplatedItemsList&lt;TVisual&gt;</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&lt;Xamarin.Forms.Cell&gt;" />
- <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ListView extends Xamarin.Forms.ItemsView`1&lt;class Xamarin.Forms.Cell&gt; implements class Xamarin.Forms.IElementController, class Xamarin.Forms.IViewController, class Xamarin.Forms.IVisualElementController" />
+ <TypeSignature Language="C#" Value="public class ListView : Xamarin.Forms.ItemsView&lt;Xamarin.Forms.Cell&gt;, Xamarin.Forms.IListViewController" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ListView extends Xamarin.Forms.ItemsView`1&lt;class Xamarin.Forms.Cell&gt; 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&lt;T&gt;" FullName="Xamarin.Forms.MultiPage&lt;T&gt;">
- <TypeSignature Language="C#" Value="public abstract class MultiPage&lt;T&gt; : Xamarin.Forms.Page, Xamarin.Forms.IPageContainer&lt;T&gt;, Xamarin.Forms.IViewContainer&lt;T&gt; where T : Page" />
- <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit MultiPage`1&lt;(class Xamarin.Forms.Page) T&gt; extends Xamarin.Forms.Page implements class Xamarin.Forms.IPageContainer`1&lt;!T&gt;, class Xamarin.Forms.IViewContainer`1&lt;!T&gt;" />
+ <TypeSignature Language="C#" Value="public abstract class MultiPage&lt;T&gt; : Xamarin.Forms.Page, Xamarin.Forms.IItemsView&lt;T&gt;, Xamarin.Forms.IPageContainer&lt;T&gt;, Xamarin.Forms.IViewContainer&lt;T&gt; where T : Page" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract beforefieldinit MultiPage`1&lt;(class Xamarin.Forms.Page) T&gt; extends Xamarin.Forms.Page implements class Xamarin.Forms.IItemsView`1&lt;!T&gt;, class Xamarin.Forms.IPageContainer`1&lt;!T&gt;, class Xamarin.Forms.IViewContainer`1&lt;!T&gt;" />
<AssemblyInfo>
<AssemblyName>Xamarin.Forms.Core</AssemblyName>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
@@ -23,6 +23,9 @@
</Base>
<Interfaces>
<Interface>
+ <InterfaceName>Xamarin.Forms.IItemsView&lt;T&gt;</InterfaceName>
+ </Interface>
+ <Interface>
<InterfaceName>Xamarin.Forms.IPageContainer&lt;T&gt;</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&lt;T&gt;" 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&lt;TItem&gt;" Kind="Interface" />
+ <Type Name="ITemplatedItemsListScrollToRequestedEventArgs" Kind="Interface" />
+ <Type Name="ITemplatedItemsView`1" DisplayName="ITemplatedItemsView&lt;TItem&gt;" Kind="Interface" />
<Type Name="ItemsView`1" DisplayName="ItemsView&lt;TVisual&gt;" 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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static Xamarin.Forms.ITemplatedItemsList&lt;TItem&gt; GetGroup&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.ITemplatedItemsList`1&lt;!!TItem&gt; GetGroup&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!TItem cell) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>Xamarin.Forms.ITemplatedItemsList&lt;TItem&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="TView">
+ <Constraints>
+ <BaseTypeName>Xamarin.Forms.BindableObject</BaseTypeName>
+ <InterfaceName>Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static TItem GetGroupHeaderContent&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TItem GetGroupHeaderContent&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static int GetIndex&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig int32 GetIndex&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static bool GetIsGroupHeader&lt;TView,TItem&gt; (this TItem cell) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool GetIsGroupHeader&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;int,int&gt; GetPath (this Xamarin.Forms.Cell cell);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Tuple`2&lt;int32, int32&gt; GetPath(class Xamarin.Forms.Cell cell) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Tuple&lt;System.Int32,System.Int32&gt;</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&lt;TView,TItem&gt;">
+ <MemberSignature Language="C#" Value="public static void SetIsGroupHeader&lt;TView,TItem&gt; (this TItem cell, bool value) where TView : Xamarin.Forms.BindableObject, Xamarin.Forms.ITemplatedItemsView&lt;TItem&gt; where TItem : Xamarin.Forms.BindableObject;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetIsGroupHeader&lt;(class Xamarin.Forms.BindableObject, class Xamarin.Forms.ITemplatedItemsView`1&lt;!!TItem&gt;) TView, (class Xamarin.Forms.BindableObject) TItem&gt;(!!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&lt;TItem&gt;</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&lt;object,int,bool&gt; insert, Action&lt;object,int&gt; 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&lt;object, int32, bool&gt; insert, class System.Action`2&lt;object, int32&gt; 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&lt;System.Object,System.Int32,System.Boolean&gt;" />
+ <Parameter Name="removeAt" Type="System.Action&lt;System.Object,System.Int32&gt;" />
+ <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&lt;TFrom&gt;">
+ <MemberSignature Language="C#" Value="public static void Apply&lt;TFrom&gt; (this System.Collections.Specialized.NotifyCollectionChangedEventArgs self, System.Collections.Generic.IList&lt;TFrom&gt; from, System.Collections.Generic.IList&lt;object&gt; to);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Apply&lt;TFrom&gt;(class System.Collections.Specialized.NotifyCollectionChangedEventArgs self, class System.Collections.Generic.IList`1&lt;!!TFrom&gt; from, class System.Collections.Generic.IList`1&lt;object&gt; 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&lt;TFrom&gt;" />
+ <Parameter Name="to" Type="System.Collections.Generic.IList&lt;System.Object&gt;" />
+ </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&lt;T&gt;">