summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls
diff options
context:
space:
mode:
authorRui Marinho <me@ruimarinho.net>2016-12-16 18:05:28 +0000
committerGitHub <noreply@github.com>2016-12-16 18:05:28 +0000
commit3216ce4ccd096f8b9f909bbeea572dcf2a8c4466 (patch)
tree8087cb06ae7ef4d5ff954f61ab16891d6148645c /Xamarin.Forms.Controls
parentdb4486db8f41642dcd2948c929bee54500d23938 (diff)
downloadxamarin-forms-3216ce4ccd096f8b9f909bbeea572dcf2a8c4466.tar.gz
xamarin-forms-3216ce4ccd096f8b9f909bbeea572dcf2a8c4466.tar.bz2
xamarin-forms-3216ce4ccd096f8b9f909bbeea572dcf2a8c4466.zip
Add sample HanselForms and TwitterDemo to ControlGallery (#651)
* [Controls] Add Hanselforms sample * Remove extra twitter sample * [Controls]Add TwitterDemo sample * [Controls] Fix build
Diffstat (limited to 'Xamarin.Forms.Controls')
-rw-r--r--Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml68
-rw-r--r--Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml.cs16
-rw-r--r--Xamarin.Forms.Controls/HanselForms/BaseView.cs32
-rw-r--r--Xamarin.Forms.Controls/HanselForms/BlogPage.xaml30
-rw-r--r--Xamarin.Forms.Controls/HanselForms/BlogPage.xaml.cs336
-rw-r--r--Xamarin.Forms.Controls/HanselForms/HBaseViewModel.cs120
-rw-r--r--Xamarin.Forms.Controls/HanselForms/MyAbout.xaml18
-rw-r--r--Xamarin.Forms.Controls/HanselForms/MyAbout.xaml.cs42
-rw-r--r--Xamarin.Forms.Controls/HanselForms/RootPage.cs181
-rw-r--r--Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml44
-rw-r--r--Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml.cs185
-rw-r--r--Xamarin.Forms.Controls/HanselForms/WebsiteView.cs21
-rw-r--r--Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj675
-rw-r--r--Xamarin.Forms.Controls/packages.config3
14 files changed, 1452 insertions, 319 deletions
diff --git a/Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml b/Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml
new file mode 100644
index 00000000..50793f8c
--- /dev/null
+++ b/Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Xamarin.Forms.Controls.MacTwitterDemo">
+ <MasterDetailPage.Master>
+ <ContentPage BackgroundColor="#24456e" Title="Master">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition />
+ <RowDefinition Height="50" />
+ </Grid.RowDefinitions>
+ <ScrollView Margin="0,55,0,0" BackgroundColor="Transparent">
+ <StackLayout>
+ <Image Source="rui.jpg" WidthRequest="50" HeightRequest="50" HorizontalOptions="Center" />
+ <Image Source="home.png" Margin="0,20,0,0" WidthRequest="25"/>
+ <Image Source="notifications.png" Margin="0,20,0,0" WidthRequest="25" />
+ <Image Source="messages.png" Margin="0,20,0,0" WidthRequest="22" />
+ <Image Source="profile.png" Margin="0,20,0,0" WidthRequest="25" />
+ <Image Source="lists.png" Margin="0,20,0,0" WidthRequest="25" />
+ <Image Source="search.png" Margin="0,20,0,0" WidthRequest="25" />
+ </StackLayout>
+ </ScrollView>
+ <Image Grid.Row="1" Source="tweet.png" WidthRequest="25" HeightRequest="25" VerticalOptions="Start" />
+ </Grid>
+ </ContentPage>
+ </MasterDetailPage.Master>
+ <MasterDetailPage.Detail>
+ <ContentPage BackgroundColor="#ffffff" Title="Home">
+ <ListView x:Name="lstTweets" RowHeight="125" BackgroundColor="#ffffff">
+ <ListView.Header>
+ <Grid HeightRequest="45" BackgroundColor="#ffffff">
+ <Grid.RowDefinitions>
+ <RowDefinition />
+ <RowDefinition Height="0.5" />
+ </Grid.RowDefinitions>
+ <Label Text="Home" FontFamily="Helvetica" FontSize="14" VerticalOptions="CenterAndExpand" VerticalTextAlignment="Center" HorizontalOptions="CenterAndExpand" />
+ <BoxView Color="#cbd5dd" Grid.Row="1" />
+ </Grid>
+ </ListView.Header>
+ <ListView.ItemTemplate>
+ <DataTemplate>
+ <ViewCell>
+ <Grid BackgroundColor="White" Padding="0,5,0,5" RowSpacing="3">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="*" />
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="0.5" />
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="50" />
+ <ColumnDefinition Width="*" />
+ </Grid.ColumnDefinitions>
+ <Image Source="xamarinlogo.png" Grid.RowSpan="3" Margin="0,5,0,0" WidthRequest="50" HeightRequest="50" VerticalOptions="Start" />
+ <Label FontFamily="Helvetica" FontSize="15" Grid.Column="1" Grid.Row="0" Text="Xamarin" VerticalOptions="Start" VerticalTextAlignment="Start" />
+ <Label FontFamily="Helvetica" FontSize="14" Grid.Column="1" Grid.Row="1" Text="Download the source code for the #XamarinEvolve 2016 app, leveraging 93% codeshare across iOS, Android, and Windows: http://xmn.io/26xD51i" />
+ <StackLayout HorizontalOptions="Start" Spacing="40" VerticalOptions="Center" Orientation="Horizontal" Grid.Column="1" Grid.Row="2" Padding="0,10,0,10">
+ <Image Source="reply.png" WidthRequest="15" />
+ <Image Source="retweet.png" WidthRequest="15" />
+ <Image Source="favorite.png" WidthRequest="15" />
+ </StackLayout>
+ <BoxView Color="#cbd5dd" Grid.Row="3" Grid.ColumnSpan="2" />
+ </Grid>
+ </ViewCell>
+ </DataTemplate>
+ </ListView.ItemTemplate>
+ </ListView>
+ </ContentPage>
+ </MasterDetailPage.Detail>
+</MasterDetailPage> \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml.cs b/Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml.cs
new file mode 100644
index 00000000..2a6b63cd
--- /dev/null
+++ b/Xamarin.Forms.Controls/GalleryPages/MacTwitterDemo.xaml.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+
+using Xamarin.Forms;
+
+namespace Xamarin.Forms.Controls
+{
+ public partial class MacTwitterDemo : MasterDetailPage
+ {
+ public MacTwitterDemo()
+ {
+ InitializeComponent();
+ lstTweets.ItemsSource = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" };
+ }
+ }
+}
diff --git a/Xamarin.Forms.Controls/HanselForms/BaseView.cs b/Xamarin.Forms.Controls/HanselForms/BaseView.cs
new file mode 100644
index 00000000..926dbc96
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/BaseView.cs
@@ -0,0 +1,32 @@
+namespace Xamarin.Forms.Controls
+{
+ public class BaseView : ContentPage
+ {
+ public BaseView()
+ {
+ SetBinding(Page.TitleProperty, new Binding(HBaseViewModel.TitlePropertyName));
+ SetBinding(Page.IconProperty, new Binding(HBaseViewModel.IconPropertyName));
+ }
+ }
+
+ public class HanselmanNavigationPage : NavigationPage
+ {
+ public HanselmanNavigationPage(Page root) : base(root)
+ {
+ Init();
+ }
+
+ public HanselmanNavigationPage()
+ {
+ Init();
+ }
+
+ void Init()
+ {
+
+ BarBackgroundColor = Color.FromHex("#03A9F4");
+ BarTextColor = Color.White;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/HanselForms/BlogPage.xaml b/Xamarin.Forms.Controls/HanselForms/BlogPage.xaml
new file mode 100644
index 00000000..c4d6c2c2
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/BlogPage.xaml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Xamarin.Forms.Controls.BlogPage" Title="{Binding Title}" Icon="{Binding Icon}" IsBusy="{Binding IsBusy}">
+ <AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
+ <ListView x:Name="listView" CachingStrategy="RecycleElement" ItemsSource="{Binding FeedItems}" HasUnevenRows="True" RowHeight="175" IsPullToRefreshEnabled="True" RefreshCommand="{Binding LoadItemsCommand}" IsRefreshing="{Binding IsBusy, Mode=OneWay}" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1">
+ <ListView.ItemTemplate>
+ <DataTemplate>
+ <ViewCell>
+ <Grid Padding="10">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="80" />
+ <ColumnDefinition Width="*" />
+ </Grid.ColumnDefinitions>
+ <StackLayout Grid.Column="1" Spacing="4" VerticalOptions="Center">
+ <Label Text="{Binding Title}" FontSize="Small" LineBreakMode="WordWrap" />
+ <Label Text="{Binding PublishDate}" TextColor="#3498DB" FontSize="Small" LineBreakMode="NoWrap" />
+ <Label Text="{Binding Caption}" FontSize="Small" LineBreakMode="WordWrap" />
+ </StackLayout>
+ <Image HeightRequest="80" WidthRequest="80" Source="{Binding FirstImage}" Aspect="AspectFill" VerticalOptions="Center" />
+ </Grid>
+ </ViewCell>
+ </DataTemplate>
+ </ListView.ItemTemplate>
+ </ListView>
+ <StackLayout IsVisible="{Binding IsBusy}" BackgroundColor="#80000000" Padding="12" AbsoluteLayout.LayoutFlags="PositionProportional" AbsoluteLayout.LayoutBounds="0.5,0.5,-1,-1">
+ <ActivityIndicator IsRunning="{Binding IsBusy}" Color="White">
+ </ActivityIndicator>
+ <Label Text="Loading Blog..." HorizontalOptions="Center" TextColor="White" />
+ </StackLayout>
+ </AbsoluteLayout>
+</ContentPage> \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/HanselForms/BlogPage.xaml.cs b/Xamarin.Forms.Controls/HanselForms/BlogPage.xaml.cs
new file mode 100644
index 00000000..67afb59d
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/BlogPage.xaml.cs
@@ -0,0 +1,336 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Net.Http;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using System.Linq;
+using Xamarin.Forms;
+
+namespace Xamarin.Forms.Controls
+{
+ public partial class BlogPage : ContentPage
+ {
+
+ private BlogFeedViewModel ViewModel
+ {
+ get { return BindingContext as BlogFeedViewModel; }
+ }
+
+ public BlogPage()
+ {
+ InitializeComponent();
+ BindingContext = new BlogFeedViewModel();
+
+ listView.ItemTapped += (sender, args) =>
+ {
+ if (listView.SelectedItem == null)
+ return;
+ this.Navigation.PushAsync(new BlogDetailsView(listView.SelectedItem as FeedItem));
+ listView.SelectedItem = null;
+ };
+ }
+
+ protected override void OnAppearing()
+ {
+ base.OnAppearing();
+ if (ViewModel == null || !ViewModel.CanLoadMore || ViewModel.IsBusy || ViewModel.FeedItems.Count > 0)
+ return;
+
+ ViewModel.LoadItemsCommand.Execute(null);
+ }
+ }
+
+
+ public class BlogDetailsView : BaseView
+ {
+ public BlogDetailsView(FeedItem item)
+ {
+ BindingContext = item;
+ var webView = new WebView
+ {
+ VerticalOptions = LayoutOptions.FillAndExpand,
+ HorizontalOptions = LayoutOptions.FillAndExpand
+ };
+ webView.Source = new HtmlWebViewSource
+ {
+ Html = item.Description
+ };
+ Content = new StackLayout
+ {
+ Children =
+ {
+ webView
+ }
+ };
+ var share = new ToolbarItem
+ {
+ Icon = "ic_share.png",
+ Text = "Share",
+ //Command = new Command(() => CrossShare.Current
+ // .Share("Be sure to read @shanselman's " + item.Title + " " + item.Link))
+ };
+
+ ToolbarItems.Add(share);
+ }
+ }
+
+
+ public class BlogFeedViewModel : HBaseViewModel
+ {
+ public BlogFeedViewModel()
+ {
+ Title = "Blog";
+ Icon = "blog.png";
+ }
+
+ private ObservableCollection<FeedItem> feedItems = new ObservableCollection<FeedItem>();
+
+ /// <summary>
+ /// gets or sets the feed items
+ /// </summary>
+ public ObservableCollection<FeedItem> FeedItems
+ {
+ get { return feedItems; }
+ set { feedItems = value; OnPropertyChanged(); }
+ }
+
+ private FeedItem selectedFeedItem;
+ /// <summary>
+ /// Gets or sets the selected feed item
+ /// </summary>
+ public FeedItem SelectedFeedItem
+ {
+ get { return selectedFeedItem; }
+ set
+ {
+ selectedFeedItem = value;
+ OnPropertyChanged();
+ }
+ }
+
+ private Command loadItemsCommand;
+ /// <summary>
+ /// Command to load/refresh items
+ /// </summary>
+ public Command LoadItemsCommand
+ {
+ get { return loadItemsCommand ?? (loadItemsCommand = new Command(async () => await ExecuteLoadItemsCommand())); }
+ }
+
+ private async Task ExecuteLoadItemsCommand()
+ {
+ if (IsBusy)
+ return;
+
+ IsBusy = true;
+ var error = false;
+ try
+ {
+ var responseString = string.Empty;
+ using (var httpClient = new HttpClient())
+ {
+ var feed = "http://feeds.hanselman.com/ScottHanselman";
+ responseString = await httpClient.GetStringAsync(feed);
+ }
+
+ FeedItems.Clear();
+ var items = await ParseFeed(responseString);
+ foreach (var item in items)
+ {
+ FeedItems.Add(item);
+ }
+ }
+ catch
+ {
+ error = true;
+ }
+
+ if (error)
+ {
+ var page = new ContentPage();
+ await page.DisplayAlert("Error", "Unable to load blog.", "OK");
+
+ }
+
+ IsBusy = false;
+ }
+
+
+
+ /// <summary>
+ /// Parse the RSS Feed
+ /// </summary>
+ /// <param name="rss"></param>
+ /// <returns></returns>
+ private async Task<List<FeedItem>> ParseFeed(string rss)
+ {
+ return await Task.Run(() =>
+ {
+ var xdoc = XDocument.Parse(rss);
+ var id = 0;
+ return (from item in xdoc.Descendants("item")
+ select new FeedItem
+ {
+ Title = (string)item.Element("title"),
+ Description = (string)item.Element("description"),
+ Link = (string)item.Element("link"),
+ PublishDate = (string)item.Element("pubDate"),
+ Category = (string)item.Element("category"),
+ Id = id++
+ }).ToList();
+ });
+ }
+
+ /// <summary>
+ /// Gets a specific feed item for an Id
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public FeedItem GetFeedItem(int id)
+ {
+ return FeedItems.FirstOrDefault(i => i.Id == id);
+ }
+ }
+
+ public class FeedItem : INotifyPropertyChanged
+ {
+
+
+
+ public string Description { get; set; }
+ public string Link { get; set; }
+ private string publishDate;
+ public string PublishDate
+ {
+ get { return publishDate; }
+ set
+ {
+ DateTime time;
+ if (DateTime.TryParse(value, out time))
+ publishDate = time.ToLocalTime().ToString("D");
+ else
+ publishDate = value;
+ }
+ }
+ public string Author { get; set; }
+ public string AuthorEmail { get; set; }
+ public int Id { get; set; }
+ public string CommentCount { get; set; }
+ public string Category { get; set; }
+
+ public string Mp3Url { get; set; }
+
+ private string title;
+ public string Title
+ {
+ get
+ {
+ return title;
+ }
+ set
+ {
+ title = value;
+
+ }
+ }
+
+ private string caption;
+
+ public string Caption
+ {
+ get
+ {
+ if (!string.IsNullOrWhiteSpace(caption))
+ return caption;
+
+
+ //get rid of HTML tags
+ caption = Regex.Replace(Description, "<[^>]*>", string.Empty);
+
+
+ //get rid of multiple blank lines
+ caption = Regex.Replace(caption, @"^\s*$\n", string.Empty, RegexOptions.Multiline);
+
+ caption = caption.Substring(0, caption.Length < 200 ? caption.Length : 200).Trim() + "...";
+ return caption;
+ }
+ }
+
+ public string Length { get; set; }
+
+ private bool showImage = true;
+
+ public bool ShowImage
+ {
+ get { return showImage; }
+ set { showImage = value; }
+ }
+
+ private string image = @"https://secure.gravatar.com/avatar/70148d964bb389d42547834e1062c886?s=60&r=x&d=http%3a%2f%2fd1iqk4d73cu9hh.cloudfront.net%2fcomponents%2fimg%2fuser-icon.png";
+
+ /// <summary>
+ /// When we set the image, mark show image as true
+ /// </summary>
+ public string Image
+ {
+ get { return image; }
+ set
+ {
+ image = value;
+ showImage = true;
+ }
+
+ }
+
+ private string firstImage;
+ public string FirstImage
+ {
+ get
+ {
+ if (!string.IsNullOrWhiteSpace(firstImage))
+ return firstImage;
+
+
+ var regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?.(?:jpg|bmp|gif|png)", RegexOptions.IgnoreCase);
+ var matches = regx.Matches(Description);
+
+ if (matches.Count == 0)
+ firstImage = ScottHead;
+ else
+ firstImage = matches[0].Value;
+
+ return firstImage;
+ }
+ }
+
+ public ImageSource FirstImageSource
+ {
+ get
+ {
+ var image = FirstImage;
+ return UriImageSource.FromUri(new Uri(image));
+ }
+ }
+
+ public string ScottHead { get { return "http://www.hanselman.com/images/photo-scott-tall.jpg"; } }
+
+ private decimal progress = 0.0M;
+ public decimal Progress
+ {
+ get { return progress; }
+ set { progress = value; OnPropertyChanged("Progress"); }
+ }
+
+
+ public event PropertyChangedEventHandler PropertyChanged;
+ private void OnPropertyChanged(string name)
+ {
+ if (PropertyChanged == null)
+ return;
+ PropertyChanged(this, new PropertyChangedEventArgs(name));
+ }
+ }
+}
diff --git a/Xamarin.Forms.Controls/HanselForms/HBaseViewModel.cs b/Xamarin.Forms.Controls/HanselForms/HBaseViewModel.cs
new file mode 100644
index 00000000..ed0c2088
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/HBaseViewModel.cs
@@ -0,0 +1,120 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+
+namespace Xamarin.Forms.Controls
+{
+ public class HBaseViewModel : INotifyPropertyChanged
+ {
+ public HBaseViewModel()
+ {
+ }
+
+ private string title = string.Empty;
+ public const string TitlePropertyName = "Title";
+
+ /// <summary>
+ /// Gets or sets the "Title" property
+ /// </summary>
+ /// <value>The title.</value>
+ public string Title
+ {
+ get { return title; }
+ set { SetProperty(ref title, value); }
+ }
+
+ private string subtitle = string.Empty;
+ /// <summary>
+ /// Gets or sets the "Subtitle" property
+ /// </summary>
+ public const string SubtitlePropertyName = "Subtitle";
+ public string Subtitle
+ {
+ get { return subtitle; }
+ set { SetProperty(ref subtitle, value); }
+ }
+
+ private string icon = null;
+ /// <summary>
+ /// Gets or sets the "Icon" of the viewmodel
+ /// </summary>
+ public const string IconPropertyName = "Icon";
+ public string Icon
+ {
+ get { return icon; }
+ set { SetProperty(ref icon, value); }
+ }
+
+ bool isBusy;
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is busy.
+ /// </summary>
+ /// <value><c>true</c> if this instance is busy; otherwise, <c>false</c>.</value>
+ public bool IsBusy
+ {
+ get { return isBusy; }
+ set
+ {
+ if (SetProperty(ref isBusy, value))
+ IsNotBusy = !isBusy;
+ }
+ }
+
+ bool isNotBusy = true;
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is not busy.
+ /// </summary>
+ /// <value><c>true</c> if this instance is not busy; otherwise, <c>false</c>.</value>
+ public bool IsNotBusy
+ {
+ get { return isNotBusy; }
+ private set { SetProperty(ref isNotBusy, value); }
+ }
+
+ private bool canLoadMore = true;
+ /// <summary>
+ /// Gets or sets if we can load more.
+ /// </summary>
+ public const string CanLoadMorePropertyName = "CanLoadMore";
+ public bool CanLoadMore
+ {
+ get { return canLoadMore; }
+ set { SetProperty(ref canLoadMore, value); }
+ }
+
+ protected bool SetProperty<T>(
+ ref T backingStore, T value,
+ [CallerMemberName]string propertyName = "",
+ Action onChanged = null)
+ {
+
+
+ if (EqualityComparer<T>.Default.Equals(backingStore, value))
+ return false;
+
+ backingStore = value;
+
+ if (onChanged != null)
+ onChanged();
+
+ OnPropertyChanged(propertyName);
+ return true;
+ }
+
+ #region INotifyPropertyChanged implementation
+ public event PropertyChangedEventHandler PropertyChanged;
+ #endregion
+
+ public void OnPropertyChanged([CallerMemberName] string propertyName = "")
+ {
+ var changed = PropertyChanged;
+ if (changed == null)
+ return;
+
+ changed(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+} \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/HanselForms/MyAbout.xaml b/Xamarin.Forms.Controls/HanselForms/MyAbout.xaml
new file mode 100644
index 00000000..151bd7c1
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/MyAbout.xaml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ContentPage Title="Scott Hanselman" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Xamarin.Forms.Controls.MyAbout">
+ <ContentPage.Content>
+ <ScrollView>
+ <StackLayout Orientation="Vertical" Spacing="10">
+ <Image Aspect="AspectFill" Source="scott.png" />
+ <StackLayout Spacing="10" Padding="10" VerticalOptions="FillAndExpand">
+ <Label Text="My name is Scott Hanselman. I'm a programmer, teacher, and speaker. I work out of my home office in Portland, Oregon for the Web Platform Team at Microsoft, but this blog, its content and opinions are my own. I blog about technology, culture, gadgets, diversity, code, the web, where we're going and where we've been. I'm excited about community, social equity, media, entrepreneurship and above all, the open web." LineBreakMode="WordWrap" />
+ <StackLayout Orientation="Horizontal" HorizontalOptions="CenterAndExpand" Spacing="10">
+ <Image x:Name="twitter" Source="twitter.png" />
+ <Image x:Name="facebook" Source="facebook.png" />
+ <Image x:Name="instagram" Source="instagram.png" />
+ </StackLayout>
+ </StackLayout>
+ </StackLayout>
+ </ScrollView>
+ </ContentPage.Content>
+</ContentPage> \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/HanselForms/MyAbout.xaml.cs b/Xamarin.Forms.Controls/HanselForms/MyAbout.xaml.cs
new file mode 100644
index 00000000..c3324538
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/MyAbout.xaml.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+
+using Xamarin.Forms;
+
+namespace Xamarin.Forms.Controls
+{
+ public partial class MyAbout : ContentPage
+ {
+ public MyAbout()
+ {
+ InitializeComponent();
+
+ twitter.GestureRecognizers.Add(new TapGestureRecognizer()
+ {
+ Command = new Command(async () =>
+ {
+
+ await this.Navigation.PushAsync(new WebsiteView("https://m.twitter.com/shanselman", "@shanselman"));
+ })
+ });
+
+ facebook.GestureRecognizers.Add(new TapGestureRecognizer()
+ {
+ Command = new Command(async () =>
+ {
+
+ await this.Navigation.PushAsync(new WebsiteView("https://facebook.com/scott.hanselman", "Scott @Facebook"));
+ })
+ });
+
+ instagram.GestureRecognizers.Add(new TapGestureRecognizer()
+ {
+ Command = new Command(async () =>
+ {
+
+ await this.Navigation.PushAsync(new WebsiteView("https://instagram.com/shanselman", "Scott @Instagram"));
+ })
+ });
+ }
+ }
+}
diff --git a/Xamarin.Forms.Controls/HanselForms/RootPage.cs b/Xamarin.Forms.Controls/HanselForms/RootPage.cs
new file mode 100644
index 00000000..7d710760
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/RootPage.cs
@@ -0,0 +1,181 @@
+using System;
+using System.Collections.Generic;
+
+namespace Xamarin.Forms.Controls
+{
+ public enum HMenuType
+ {
+ About,
+ Blog,
+ Twitter,
+ Hanselminutes,
+ Ratchet,
+ DeveloperLife
+ }
+
+ public class HomeMenuItem : BaseModel
+ {
+ public HomeMenuItem()
+ {
+ MenuType = HMenuType.About;
+ }
+ public string Icon { get; set; }
+ public HMenuType MenuType { get; set; }
+ }
+
+ public class BaseModel
+ {
+ public string Title { get; set; }
+ public string Details { get; set; }
+ public int Id { get; set; }
+ }
+
+ public class RootPage : MasterDetailPage
+ {
+ public static bool IsUWPDesktop { get; set; }
+ Dictionary<HMenuType, NavigationPage> Pages { get; set; }
+ public RootPage()
+ {
+ Pages = new Dictionary<HMenuType, NavigationPage>();
+ Master = new MenuPage1(this);
+
+ BindingContext = new HBaseViewModel
+ {
+ Title = "Hanselman",
+ Icon = "slideout.png"
+ };
+ Navigate(HMenuType.About);
+ }
+
+ public void Navigate(HMenuType id)
+ {
+ Page newPage;
+ if (!Pages.ContainsKey(id))
+ {
+ switch (id)
+ {
+ case HMenuType.About:
+ Pages.Add(id, new HanselmanNavigationPage(new MyAbout()));
+ break;
+ case HMenuType.Blog:
+ Pages.Add(id, new HanselmanNavigationPage(new BlogPage()));
+ break;
+ case HMenuType.DeveloperLife:
+ Pages.Add(id, new HanselmanNavigationPage(new ContentPage() { Title = "Page 3" }));
+ break;
+ case HMenuType.Hanselminutes:
+ Pages.Add(id, new HanselmanNavigationPage(new ContentPage() { Title = "Page 4" }));
+ break;
+ case HMenuType.Ratchet:
+ Pages.Add(id, new HanselmanNavigationPage(new ContentPage() { Title = "Page 5" }));
+ break;
+ case HMenuType.Twitter:
+ Pages.Add(id, new HanselmanNavigationPage(new ContentPage() { Title = "Page 6" }));
+ break;
+ }
+ }
+
+ newPage = Pages[id];
+ if (newPage == null)
+ return;
+
+ Detail = newPage;
+ }
+ }
+
+ public class MenuPage1 : ContentPage
+ {
+ RootPage mdp;
+ ListView ListViewMenu;
+ List<HomeMenuItem> menuItems;
+ public MenuPage1(RootPage page)
+ {
+ Title = "Master";
+ mdp = page;
+ ListViewMenu = new ListView(ListViewCachingStrategy.RecycleElement)
+ {
+ HasUnevenRows = true,
+ SeparatorColor = Color.Transparent,
+ ItemTemplate = new DataTemplate(typeof(MenuViewCell))
+ };
+ ListViewMenu.ItemsSource = menuItems = new List<HomeMenuItem>
+ {
+ new HomeMenuItem { Title = "About", MenuType = HMenuType.About, Icon ="about.png" },
+ new HomeMenuItem { Title = "Blog", MenuType = HMenuType.Blog, Icon = "blog.png" },
+ new HomeMenuItem { Title = "Twitter", MenuType = HMenuType.Twitter, Icon = "twitternav.png" },
+ new HomeMenuItem { Title = "Hanselminues", MenuType = HMenuType.Hanselminutes, Icon = "hm.png" },
+ new HomeMenuItem { Title = "Ratchet", MenuType = HMenuType.Ratchet, Icon = "ratchet.png" },
+ new HomeMenuItem { Title = "Developers Life", MenuType = HMenuType.DeveloperLife, Icon = "tdl.png"},
+ };
+
+ ListViewMenu.Header = GetHeader();
+
+ ListViewMenu.SelectedItem = menuItems[0];
+
+ ListViewMenu.ItemSelected += (sender, e) =>
+ {
+ if (ListViewMenu.SelectedItem == null)
+ return;
+
+ mdp.Navigate(((HomeMenuItem)e.SelectedItem).MenuType);
+ };
+ Content = ListViewMenu;
+ }
+
+ static Grid GetHeader()
+ {
+ var grd = new Grid { Padding = new Thickness() };
+ grd.ColumnDefinitions.Add(new ColumnDefinition { Width = 10 });
+ grd.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
+ grd.ColumnDefinitions.Add(new ColumnDefinition { Width = 10 });
+
+ grd.RowDefinitions.Add(new RowDefinition { Height = 30 });
+ grd.RowDefinitions.Add(new RowDefinition { Height = 80 });
+ grd.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
+ grd.RowDefinitions.Add(new RowDefinition { Height = 5 });
+
+ var boxView = new BoxView { BackgroundColor = Color.FromHex("#03A9F4") };
+ Grid.SetRowSpan(boxView, 4);
+ Grid.SetColumnSpan(boxView, 3);
+
+ var image = new Image
+ {
+ Source = "scott159.png",
+ WidthRequest = 75,
+ HeightRequest = 75,
+ VerticalOptions = LayoutOptions.End,
+ HorizontalOptions = LayoutOptions.Start
+ };
+
+ Grid.SetRow(image, 1);
+ Grid.SetColumn(image, 1);
+
+ var lbl = new Label { Text = "Hanselman.Forms" };
+ Grid.SetRow(lbl, 2);
+ Grid.SetColumn(lbl, 1);
+
+ grd.Children.Add(boxView);
+ grd.Children.Add(image);
+ grd.Children.Add(lbl);
+ return grd;
+ }
+ }
+
+ class MenuViewCell : ViewCell
+ {
+ public MenuViewCell()
+ {
+ var grd = new Grid { Padding = new Thickness(5) };
+ grd.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
+ grd.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
+ var img = new Image { HeightRequest = 25, WidthRequest = 25 };
+ img.SetBinding(Image.SourceProperty, nameof(HomeMenuItem.Icon));
+ var lbl = new Label { FontSize = 24, VerticalOptions = LayoutOptions.Center };
+ lbl.SetBinding(Label.TextProperty, nameof(HomeMenuItem.Title));
+ Grid.SetColumn(lbl, 1);
+ grd.Children.Add(img);
+ grd.Children.Add(lbl);
+ View = grd;
+ }
+ }
+}
diff --git a/Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml b/Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml
new file mode 100644
index 00000000..fb072797
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Xamarin.Forms.Controls.TwitterPage" Title="{Binding Title}" Icon="{Binding Icon}" IsBusy="{Binding IsBusy}">
+ <AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
+ <ListView CachingStrategy="RecycleElement" x:Name="listView" ItemsSource="{Binding Tweets}" HasUnevenRows="True" RowHeight="150" IsPullToRefreshEnabled="True" RefreshCommand="{Binding LoadTweetsCommand}" IsRefreshing="{Binding IsBusy, Mode=OneWay}" AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,1">
+ <ListView.ItemTemplate>
+ <DataTemplate>
+ <ViewCell>
+ <Grid Padding="10,5">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="*" />
+ </Grid.ColumnDefinitions>
+ <Image Source="{Binding Image}" VerticalOptions="Center">
+ <Image.WidthRequest>
+ <OnPlatform x:TypeArguments="x:Double">
+ <OnPlatform.iOS>55</OnPlatform.iOS>
+ <OnPlatform.Android>55 </OnPlatform.Android>
+ <OnPlatform.WinPhone>75</OnPlatform.WinPhone>
+ </OnPlatform>
+ </Image.WidthRequest>
+ <Image.HeightRequest>
+ <OnPlatform x:TypeArguments="x:Double">
+ <OnPlatform.iOS>55</OnPlatform.iOS>
+ <OnPlatform.Android>55</OnPlatform.Android>
+ <OnPlatform.WinPhone>75</OnPlatform.WinPhone>
+ </OnPlatform>
+ </Image.HeightRequest>
+ </Image>
+ <StackLayout Grid.Column="1" Padding="8" Spacing="4" VerticalOptions="Center">
+ <Label Text="{Binding Date}" FontSize="Medium" TextColor="#3498DB" LineBreakMode="NoWrap" />
+ <Label Text="{Binding Text}" x:Name="TweetText" FontSize="Small" LineBreakMode="WordWrap" />
+ </StackLayout>
+ </Grid>
+ </ViewCell>
+ </DataTemplate>
+ </ListView.ItemTemplate>
+ </ListView>
+ <StackLayout IsVisible="{Binding IsBusy}" BackgroundColor="#80000000" Padding="12" AbsoluteLayout.LayoutFlags="PositionProportional" AbsoluteLayout.LayoutBounds="0.5,0.5,-1,-1">
+ <ActivityIndicator IsRunning="{Binding IsBusy}" Color="White">
+ </ActivityIndicator>
+ <Label Text="Loading Twitter..." HorizontalOptions="Center" TextColor="White" />
+ </StackLayout>
+ </AbsoluteLayout>
+</ContentPage> \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml.cs b/Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml.cs
new file mode 100644
index 00000000..40e488e4
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/TwitterPage.xaml.cs
@@ -0,0 +1,185 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Threading.Tasks;
+
+namespace Xamarin.Forms.Controls
+{
+ public partial class TwitterPage : ContentPage
+ {
+
+ private TwitterViewModel ViewModel
+ {
+ get { return BindingContext as TwitterViewModel; }
+ }
+ public TwitterPage()
+ {
+ InitializeComponent();
+ BindingContext = new TwitterViewModel();
+
+
+ listView.ItemTapped += (sender, args) =>
+ {
+ if (listView.SelectedItem == null)
+ return;
+ var tweet = listView.SelectedItem as Tweet;
+ this.Navigation.PushAsync(new WebsiteView("http://m.twitter.com/shanselman/status/" + tweet.StatusID, tweet.Date));
+ listView.SelectedItem = null;
+ };
+ }
+
+
+ protected override void OnAppearing()
+ {
+ base.OnAppearing();
+ if (ViewModel == null || !ViewModel.CanLoadMore || ViewModel.IsBusy || ViewModel.Tweets.Count > 0)
+ return;
+
+ ViewModel.LoadTweetsCommand.Execute(null);
+ }
+ }
+
+ public class TwitterViewModel : HBaseViewModel
+ {
+
+ public ObservableCollection<Tweet> Tweets { get; set; }
+
+ public TwitterViewModel()
+ {
+ Title = "Twitter";
+ Icon = "slideout.png";
+ Tweets = new ObservableCollection<Tweet>();
+
+ }
+
+ private Command loadTweetsCommand;
+
+ public Command LoadTweetsCommand
+ {
+ get
+ {
+ return loadTweetsCommand ??
+ (loadTweetsCommand = new Command(async () =>
+ {
+ await ExecuteLoadTweetsCommand();
+ }, () =>
+ {
+ return !IsBusy;
+ }));
+ }
+ }
+
+ public async Task ExecuteLoadTweetsCommand()
+ {
+ if (IsBusy)
+ return;
+
+ IsBusy = true;
+ LoadTweetsCommand.ChangeCanExecute();
+ var error = false;
+ try
+ {
+
+ Tweets.Clear();
+ //var auth = new ApplicationOnlyAuthorizer()
+ //{
+ // CredentialStore = new InMemoryCredentialStore
+ // {
+ // ConsumerKey = "ZTmEODUCChOhLXO4lnUCEbH2I",
+ // ConsumerSecret = "Y8z2Wouc5ckFb1a0wjUDT9KAI6DUat5tFNdmIkPLl8T4Nyaa2J",
+ // },
+ //};
+ //await auth.AuthorizeAsync();
+
+ //var twitterContext = new TwitterContext(auth);
+
+ //var queryResponse = await
+ // (from tweet in twitterContext.Status
+ // where tweet.Type == StatusType.User &&
+ // tweet.ScreenName == "shanselman" &&
+ // tweet.Count == 100 &&
+ // tweet.IncludeRetweets == true &&
+ // tweet.ExcludeReplies == true
+ // select tweet).ToListAsync();
+
+ //var tweets =
+ // (from tweet in queryResponse
+ // select new Tweet
+ // {
+ // StatusID = tweet.StatusID,
+ // ScreenName = tweet.User.ScreenNameResponse,
+ // Text = tweet.Text,
+ // CurrentUserRetweet = tweet.CurrentUserRetweet,
+ // CreatedAt = tweet.CreatedAt,
+ // Image = tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
+ // tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : (tweet.User.ScreenNameResponse == "shanselman" ? "scott159.png" : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
+ // }).ToList();
+ //foreach (var tweet in tweets)
+ //{
+ // Tweets.Add(tweet);
+ //}
+
+ if (Device.OS == TargetPlatform.iOS)
+ {
+ // only does anything on iOS, for the Watch
+ // DependencyService.Get<ITweetStore>().Save(tweets);
+ }
+
+
+
+ }
+ catch
+ {
+ error = true;
+ }
+
+ if (error)
+ {
+ var page = new ContentPage();
+ await page.DisplayAlert("Error", "Unable to load tweets.", "OK");
+ }
+
+ IsBusy = false;
+ LoadTweetsCommand.ChangeCanExecute();
+ }
+ }
+
+ public class Tweet
+ {
+ public Tweet()
+ {
+ }
+
+
+ public ulong StatusID { get; set; }
+
+ public string ScreenName { get; set; }
+
+ public string Text { get; set; }
+
+ //[JsonIgnore]
+ public string Date { get { return CreatedAt.ToString("g"); } }
+ //[JsonIgnore]
+ public string RTCount { get { return CurrentUserRetweet == 0 ? string.Empty : CurrentUserRetweet + " RT"; } }
+
+ public string Image { get; set; }
+
+ public DateTime CreatedAt
+ {
+ get;
+ set;
+ }
+
+ public ulong CurrentUserRetweet
+ {
+ get;
+ set;
+ }
+ }
+
+ public interface ITweetStore
+ {
+ void Save(System.Collections.Generic.List<Tweet> tweets);
+ //System.Collections.Generic.List<Hanselman.Shared.Tweet> Load ();
+ }
+}
diff --git a/Xamarin.Forms.Controls/HanselForms/WebsiteView.cs b/Xamarin.Forms.Controls/HanselForms/WebsiteView.cs
new file mode 100644
index 00000000..38b35fec
--- /dev/null
+++ b/Xamarin.Forms.Controls/HanselForms/WebsiteView.cs
@@ -0,0 +1,21 @@
+using System;
+
+using Xamarin.Forms;
+
+namespace Xamarin.Forms.Controls
+{
+ public class WebsiteView : BaseView
+ {
+ public WebsiteView(string site, string title)
+ {
+ this.Title = title;
+ var webView = new WebView();
+ webView.Source = new UrlWebViewSource
+ {
+ Url = site
+ };
+ Content = webView;
+ }
+ }
+}
+
diff --git a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
index 7e8e64c5..fa6da678 100644
--- a/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
+++ b/Xamarin.Forms.Controls/Xamarin.Forms.Controls.csproj
@@ -1,328 +1,365 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
- <PropertyGroup>
- <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Xamarin.Forms.Controls</RootNamespace>
- <AssemblyName>Xamarin.Forms.Controls</AssemblyName>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <TargetFrameworkProfile>Profile259</TargetFrameworkProfile>
- <FileAlignment>512</FileAlignment>
- <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
- <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
- <RestorePackages>true</RestorePackages>
- <NuGetPackageImportStamp>
- </NuGetPackageImportStamp>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>TRACE;DEBUG;PERF;APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>0114;0108;0109;4014;0649;0169;0472;0414;0168;0219;0429</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE;APP</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>0114;0108;0109;4014;0649;0169;0472;0414;0168;0219;0429</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'">
- <DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\Turkey\</OutputPath>
- <DefineConstants>TRACE;DEBUG;PERF;APP</DefineConstants>
- <DebugType>full</DebugType>
- <PlatformTarget>AnyCPU</PlatformTarget>
- <ErrorReport>prompt</ErrorReport>
- <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
- <WarningLevel>4</WarningLevel>
- <Optimize>false</Optimize>
- <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn>0114;0108;0109;4014;0649;0169;0472;0414;0168;0219;0429</NoWarn>
- </PropertyGroup>
- <ItemGroup>
- <!-- A reference to the entire .NET Framework is automatically included -->
- <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
- <Project>{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}</Project>
- <Name>Xamarin.Forms.Core</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Build.Tasks\Xamarin.Forms.Build.Tasks.csproj">
- <Project>{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}</Project>
- <Name>Xamarin.Forms.Build.Tasks</Name>
- <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj">
- <Project>{4dcd0420-1168-4b77-86db-6196ee4bd491}</Project>
- <Name>Xamarin.Forms.CustomAttributes</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
- <Project>{7d13bac2-c6a4-416a-b07e-c169b199e52b}</Project>
- <Name>Xamarin.Forms.Maps</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Pages\Xamarin.Forms.Pages.csproj">
- <Project>{d6133dbd-6c60-4bd5-bea2-07e0a3927c31}</Project>
- <Name>Xamarin.Forms.Pages</Name>
- </ProjectReference>
- <ProjectReference Include="..\Xamarin.Forms.Xaml\Xamarin.Forms.Xaml.csproj">
- <Project>{9db2f292-8034-4e06-89ad-98bbda4306b9}</Project>
- <Name>Xamarin.Forms.Xaml</Name>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <Compile Include="App.cs" />
- <Compile Include="AppLifeCycle.cs" />
- <Compile Include="Bugzilla44596SplashPage.cs" />
- <Compile Include="ControlGalleryPages\CellForceUpdateSizeGalleryPage.cs" />
- <Compile Include="ControlGalleryPages\LayoutAddPerformance.xaml.cs">
- <DependentUpon>LayoutAddPerformance.xaml</DependentUpon>
- </Compile>
- <Compile Include="ControlGalleryPages\ListScrollTo.cs" />
- <Compile Include="ControlGalleryPages\NavBarTitleTestPage.cs" />
- <Compile Include="ControlGalleryPages\NestedNativeControlGalleryPage.cs" />
- <Compile Include="ControlGalleryPages\PanGestureGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\KeyboardCoreGalleryPage.cs" />
- <Compile Include="GalleryPages\BackgroundImageGallery.cs" />
- <Compile Include="GalleryPages\ControlTemplatePage.cs" />
- <Compile Include="GalleryPages\ControlTemplateXamlPage.xaml.cs">
- <DependentUpon>ControlTemplateXamlPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="GalleryPages\LayoutPerformanceGallery.cs" />
- <Compile Include="GalleryPages\NavigationPropertiesGallery.cs" />
- <Compile Include="ControlGalleryPages\ListViewSelectionColor.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\ApplicationAndroid.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\EntryPageiOS.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\MasterDetailPageiOS.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\MasterDetailPageWindows.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\NavigationPageiOS.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\NavigationPageWindows.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\TabbedPageAndroid.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\TabbedPageiOS.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\TabbedPageWindows.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\VisualElementiOS.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGalleries\WindowsPlatformSpecificsGalleryHelpers.cs" />
- <Compile Include="GalleryPages\PlatformSpecificsGallery.cs" />
- <Compile Include="LegacyRepro\Page1.xaml.cs">
- <DependentUpon>Page1.xaml</DependentUpon>
- </Compile>
- <Compile Include="MainPageLifeCycleTests.cs" />
- <Compile Include="NavReproApp.cs" />
- <Compile Include="RootPages\RootContentPage.cs" />
- <Compile Include="RootPages\SwapHierachyStackLayout.cs" />
- <Compile Include="GalleryPages\EditableList.cs" />
- <Compile Include="CoreGalleryPages\EditorCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\EntryCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\FrameCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\ImageCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\LabelCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\ListViewCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\OpenGLViewCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\PickerCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\ProgressBarCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\SearchBarCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\SliderCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\StepperCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\SwitchCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\TableViewCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\TimePickerCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\WebViewCoreGalleryPage.cs" />
- <Compile Include="LegacyRepro\SampleViewCell.xaml.cs">
- <DependentUpon>SampleViewCell.xaml</DependentUpon>
- </Compile>
- <Compile Include="SimpleApp.cs" />
- <Compile Include="ViewContainers\EventViewContainer.cs" />
- <Compile Include="ViewContainers\LayeredViewContainer.cs" />
- <Compile Include="ViewContainers\MultiBindingHack.cs" />
- <Compile Include="ViewContainers\StateViewContainer.cs" />
- <Compile Include="ViewContainers\ValueViewContainer.cs" />
- <Compile Include="ViewContainers\ViewContainer.cs" />
- <Compile Include="CoreGalleryPages\ActivityIndicatorCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\CoreBoxViewGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\ButtonCoreGalleryPage.cs" />
- <Compile Include="CoreGallery.cs" />
- <Compile Include="CoreGalleryPages\DatePickerCoreGalleryPage.cs" />
- <Compile Include="CoreGalleryPages\CoreGalleryPage.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="TestCases.cs" />
- <Compile Include="GalleryPages\GridGallery.cs" />
- <Compile Include="GalleryPages\PickerGallery.cs" />
- <Compile Include="GalleryPages\ImageLoadingGallery.cs" />
- <Compile Include="GalleryPages\CarouselPageGallery.cs" />
- <Compile Include="GalleryPages\StepperGallery.cs" />
- <Compile Include="GalleryPages\ScaleRotate.cs" />
- <Compile Include="GalleryPages\LineBreakModeGallery.cs" />
- <Compile Include="GalleryPages\ActionSheetGallery.cs" />
- <Compile Include="GalleryPages\XamlPage.xaml.cs">
- <DependentUpon>XamlPage.xaml</DependentUpon>
- </Compile>
- <Compile Include="RootPages\RootTabbedContentPage.cs" />
- <Compile Include="RootPages\RootTabbedNavigationContentPage.cs" />
- <Compile Include="RootPages\RootNavigationContentPage.cs" />
- <Compile Include="RootPages\RootNavigationTabbedContentPage.cs" />
- <Compile Include="RootPages\RootMDPNavigationContentPage.cs" />
- <Compile Include="RootPages\RootTabbedMDPNavigationContentPage.cs" />
- <Compile Include="RootPages\RootTabbedManyNavigationContentPage.cs" />
- <Compile Include="RootPages\RootNavigationManyTabbedPage.cs" />
- <Compile Include="ControlGalleryPages\BehaviorsAndTriggers.xaml.cs">
- <DependentUpon>BehaviorsAndTriggers.xaml</DependentUpon>
- </Compile>
- <Compile Include="GalleryPages\CellsGalleries\EntryCellListPage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\EntryCellTablePage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\ImageCellListPage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\ImageCellTablePage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\ProductViewCell.cs" />
- <Compile Include="GalleryPages\CellsGalleries\SwitchCellListPage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\SwitchCellTablePage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\TextCellListPage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\TextCellTablePage.cs" />
- <Compile Include="GalleryPages\CellsGalleries\UnEvenViewCellGallery.cs" />
- <Compile Include="GalleryPages\CellsGalleries\ViewCellGallery.cs" />
- <Compile Include="GalleryPages\AbsoluteLayoutGallery.cs" />
- <Compile Include="GalleryPages\BoundContentPage.cs" />
- <Compile Include="GalleryPages\ButtonGallery.cs" />
- <Compile Include="GalleryPages\CellTypeList.cs" />
- <Compile Include="GalleryPages\ClipToBoundsGallery.cs" />
- <Compile Include="GalleryPages\DisposeGallery.cs" />
- <Compile Include="GalleryPages\EditorGallery.cs" />
- <Compile Include="GalleryPages\EntryGallery.cs" />
- <Compile Include="GalleryPages\FrameGallery.cs" />
- <Compile Include="GalleryPages\GroupedListActionsGallery.cs" />
- <Compile Include="GalleryPages\GroupedListContactsGallery.cs" />
- <Compile Include="GalleryPages\ImageGallery.cs" />
- <Compile Include="GalleryPages\InputIntentGallery.cs" />
- <Compile Include="GalleryPages\LabelGallery.cs" />
- <Compile Include="GalleryPages\LayoutOptionsGallery.cs" />
- <Compile Include="GalleryPages\ListPage.cs" />
- <Compile Include="GalleryPages\ListViewDemoPage.cs" />
- <Compile Include="GalleryPages\MapGallery.cs" />
- <Compile Include="GalleryPages\MinimumSizeGallery.cs" />
- <Compile Include="GalleryPages\MultiGallery.cs" />
- <Compile Include="GalleryPages\NavigationBarGallery.cs" />
- <Compile Include="GalleryPages\NavigationMenuGallery.cs" />
- <Compile Include="GalleryPages\OpenGLGallery.cs" />
- <Compile Include="GalleryPages\ProgressBarGallery.cs" />
- <Compile Include="GalleryPages\RelativeLayoutGallery.cs" />
- <Compile Include="GalleryPages\ScrollGallery.cs" />
- <Compile Include="GalleryPages\SearchBarGallery.cs" />
- <Compile Include="GalleryPages\SettingsPage.cs" />
- <Compile Include="GalleryPages\SliderGallery.cs" />
- <Compile Include="GalleryPages\StackLayoutGallery.cs" />
- <Compile Include="GalleryPages\SwitchGallery.cs" />
- <Compile Include="GalleryPages\TableViewGallery.cs" />
- <Compile Include="GalleryPages\TemplatedCarouselGallery.cs" />
- <Compile Include="GalleryPages\TemplatedTabbedGallery.cs" />
- <Compile Include="GalleryPages\UnevenListGallery.cs" />
- <Compile Include="GalleryPages\WebViewGallery.cs" />
- <Compile Include="GalleryPages\StyleGallery.cs" />
- <Compile Include="GalleryPages\StyleXamlGallery.xaml.cs">
- <DependentUpon>StyleXamlGallery.xaml</DependentUpon>
- </Compile>
- <Compile Include="GalleryPages\MasterDetailPageTabletPage.cs" />
- <Compile Include="Helpers\ITestCloudService.cs" />
- <Compile Include="ControlGalleryPages\ToolbarItems.cs" />
- <Compile Include="GalleryPages\AlertGallery.cs" />
- <Compile Include="RootPages\RootMDPNavigationTabbedContentPage.cs" />
- <Compile Include="Controls\Issue3076Button.cs" />
- <Compile Include="ControlGalleryPages\ListRefresh.cs" />
- <Compile Include="ControlGalleryPages\PinchGestureTestPage.cs" />
- <Compile Include="ControlGalleryPages\AppearingGalleryPage.cs" />
- <Compile Include="ControlGalleryPages\AutomationIDGallery.cs" />
- <Compile Include="GalleryPages\AppLinkPageGallery.cs" />
- <Compile Include="ControlGalleryPages\NativeBindingGalleryPage.cs" />
- <Compile Include="GalleryPages\XamlNativeViews.xaml.cs">
- <DependentUpon>XamlNativeViews.xaml</DependentUpon>
- </Compile>
- </ItemGroup>
- <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
- <Import Project="..\.nuspec\Xamarin.Forms.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{CB9C96CE-125C-4A68-B6A1-C3FF1FBF93E1}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Xamarin.Forms.Controls</RootNamespace>
+ <AssemblyName>Xamarin.Forms.Controls</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <TargetFrameworkProfile>Profile259</TargetFrameworkProfile>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
+ <RestorePackages>true</RestorePackages>
+ <NuGetPackageImportStamp>
+ </NuGetPackageImportStamp>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;PERF;APP</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <NoWarn>0114;0108;0109;4014;0649;0169;0472;0414;0168;0219;0429</NoWarn>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE;APP</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <NoWarn>0114;0108;0109;4014;0649;0169;0472;0414;0168;0219;0429</NoWarn>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Turkey|AnyCPU'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Turkey\</OutputPath>
+ <DefineConstants>TRACE;DEBUG;PERF;APP</DefineConstants>
+ <DebugType>full</DebugType>
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+ <WarningLevel>4</WarningLevel>
+ <Optimize>false</Optimize>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <NoWarn>0114;0108;0109;4014;0649;0169;0472;0414;0168;0219;0429</NoWarn>
+ </PropertyGroup>
+ <ItemGroup>
+ <!-- A reference to the entire .NET Framework is automatically included -->
+ <ProjectReference Include="..\Xamarin.Forms.Core\Xamarin.Forms.Core.csproj">
+ <Project>{57B8B73D-C3B5-4C42-869E-7B2F17D354AC}</Project>
+ <Name>Xamarin.Forms.Core</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Xamarin.Forms.Build.Tasks\Xamarin.Forms.Build.Tasks.csproj">
+ <Project>{96D89208-4EB9-4451-BE73-8A9DF3D9D7B7}</Project>
+ <Name>Xamarin.Forms.Build.Tasks</Name>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\Xamarin.Forms.CustomAttributes\Xamarin.Forms.CustomAttributes.csproj">
+ <Project>{4dcd0420-1168-4b77-86db-6196ee4bd491}</Project>
+ <Name>Xamarin.Forms.CustomAttributes</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Xamarin.Forms.Maps\Xamarin.Forms.Maps.csproj">
+ <Project>{7d13bac2-c6a4-416a-b07e-c169b199e52b}</Project>
+ <Name>Xamarin.Forms.Maps</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Xamarin.Forms.Pages\Xamarin.Forms.Pages.csproj">
+ <Project>{d6133dbd-6c60-4bd5-bea2-07e0a3927c31}</Project>
+ <Name>Xamarin.Forms.Pages</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Xamarin.Forms.Xaml\Xamarin.Forms.Xaml.csproj">
+ <Project>{9db2f292-8034-4e06-89ad-98bbda4306b9}</Project>
+ <Name>Xamarin.Forms.Xaml</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="App.cs" />
+ <Compile Include="AppLifeCycle.cs" />
+ <Compile Include="Bugzilla44596SplashPage.cs" />
+ <Compile Include="ControlGalleryPages\CellForceUpdateSizeGalleryPage.cs" />
+ <Compile Include="ControlGalleryPages\LayoutAddPerformance.xaml.cs">
+ <DependentUpon>LayoutAddPerformance.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="ControlGalleryPages\ListScrollTo.cs" />
+ <Compile Include="ControlGalleryPages\NavBarTitleTestPage.cs" />
+ <Compile Include="ControlGalleryPages\NestedNativeControlGalleryPage.cs" />
+ <Compile Include="ControlGalleryPages\PanGestureGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\KeyboardCoreGalleryPage.cs" />
+ <Compile Include="GalleryPages\BackgroundImageGallery.cs" />
+ <Compile Include="GalleryPages\ControlTemplatePage.cs" />
+ <Compile Include="GalleryPages\ControlTemplateXamlPage.xaml.cs">
+ <DependentUpon>ControlTemplateXamlPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="GalleryPages\LayoutPerformanceGallery.cs" />
+ <Compile Include="GalleryPages\NavigationPropertiesGallery.cs" />
+ <Compile Include="ControlGalleryPages\ListViewSelectionColor.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\ApplicationAndroid.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\EntryPageiOS.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\MasterDetailPageiOS.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\MasterDetailPageWindows.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\NavigationPageiOS.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\NavigationPageWindows.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\TabbedPageAndroid.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\TabbedPageiOS.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\TabbedPageWindows.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\VisualElementiOS.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGalleries\WindowsPlatformSpecificsGalleryHelpers.cs" />
+ <Compile Include="GalleryPages\PlatformSpecificsGallery.cs" />
+ <Compile Include="LegacyRepro\Page1.xaml.cs">
+ <DependentUpon>Page1.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="MainPageLifeCycleTests.cs" />
+ <Compile Include="NavReproApp.cs" />
+ <Compile Include="RootPages\RootContentPage.cs" />
+ <Compile Include="RootPages\SwapHierachyStackLayout.cs" />
+ <Compile Include="GalleryPages\EditableList.cs" />
+ <Compile Include="CoreGalleryPages\EditorCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\EntryCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\FrameCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\ImageCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\LabelCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\ListViewCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\OpenGLViewCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\PickerCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\ProgressBarCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\SearchBarCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\SliderCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\StepperCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\SwitchCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\TableViewCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\TimePickerCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\WebViewCoreGalleryPage.cs" />
+ <Compile Include="LegacyRepro\SampleViewCell.xaml.cs">
+ <DependentUpon>SampleViewCell.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="SimpleApp.cs" />
+ <Compile Include="ViewContainers\EventViewContainer.cs" />
+ <Compile Include="ViewContainers\LayeredViewContainer.cs" />
+ <Compile Include="ViewContainers\MultiBindingHack.cs" />
+ <Compile Include="ViewContainers\StateViewContainer.cs" />
+ <Compile Include="ViewContainers\ValueViewContainer.cs" />
+ <Compile Include="ViewContainers\ViewContainer.cs" />
+ <Compile Include="CoreGalleryPages\ActivityIndicatorCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\CoreBoxViewGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\ButtonCoreGalleryPage.cs" />
+ <Compile Include="CoreGallery.cs" />
+ <Compile Include="CoreGalleryPages\DatePickerCoreGalleryPage.cs" />
+ <Compile Include="CoreGalleryPages\CoreGalleryPage.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="TestCases.cs" />
+ <Compile Include="GalleryPages\GridGallery.cs" />
+ <Compile Include="GalleryPages\PickerGallery.cs" />
+ <Compile Include="GalleryPages\ImageLoadingGallery.cs" />
+ <Compile Include="GalleryPages\CarouselPageGallery.cs" />
+ <Compile Include="GalleryPages\StepperGallery.cs" />
+ <Compile Include="GalleryPages\ScaleRotate.cs" />
+ <Compile Include="GalleryPages\LineBreakModeGallery.cs" />
+ <Compile Include="GalleryPages\ActionSheetGallery.cs" />
+ <Compile Include="GalleryPages\XamlPage.xaml.cs">
+ <DependentUpon>XamlPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="RootPages\RootTabbedContentPage.cs" />
+ <Compile Include="RootPages\RootTabbedNavigationContentPage.cs" />
+ <Compile Include="RootPages\RootNavigationContentPage.cs" />
+ <Compile Include="RootPages\RootNavigationTabbedContentPage.cs" />
+ <Compile Include="RootPages\RootMDPNavigationContentPage.cs" />
+ <Compile Include="RootPages\RootTabbedMDPNavigationContentPage.cs" />
+ <Compile Include="RootPages\RootTabbedManyNavigationContentPage.cs" />
+ <Compile Include="RootPages\RootNavigationManyTabbedPage.cs" />
+ <Compile Include="ControlGalleryPages\BehaviorsAndTriggers.xaml.cs">
+ <DependentUpon>BehaviorsAndTriggers.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="GalleryPages\CellsGalleries\EntryCellListPage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\EntryCellTablePage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\ImageCellListPage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\ImageCellTablePage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\ProductViewCell.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\SwitchCellListPage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\SwitchCellTablePage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\TextCellListPage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\TextCellTablePage.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\UnEvenViewCellGallery.cs" />
+ <Compile Include="GalleryPages\CellsGalleries\ViewCellGallery.cs" />
+ <Compile Include="GalleryPages\AbsoluteLayoutGallery.cs" />
+ <Compile Include="GalleryPages\BoundContentPage.cs" />
+ <Compile Include="GalleryPages\ButtonGallery.cs" />
+ <Compile Include="GalleryPages\CellTypeList.cs" />
+ <Compile Include="GalleryPages\ClipToBoundsGallery.cs" />
+ <Compile Include="GalleryPages\DisposeGallery.cs" />
+ <Compile Include="GalleryPages\EditorGallery.cs" />
+ <Compile Include="GalleryPages\EntryGallery.cs" />
+ <Compile Include="GalleryPages\FrameGallery.cs" />
+ <Compile Include="GalleryPages\GroupedListActionsGallery.cs" />
+ <Compile Include="GalleryPages\GroupedListContactsGallery.cs" />
+ <Compile Include="GalleryPages\ImageGallery.cs" />
+ <Compile Include="GalleryPages\InputIntentGallery.cs" />
+ <Compile Include="GalleryPages\LabelGallery.cs" />
+ <Compile Include="GalleryPages\LayoutOptionsGallery.cs" />
+ <Compile Include="GalleryPages\ListPage.cs" />
+ <Compile Include="GalleryPages\ListViewDemoPage.cs" />
+ <Compile Include="GalleryPages\MapGallery.cs" />
+ <Compile Include="GalleryPages\MinimumSizeGallery.cs" />
+ <Compile Include="GalleryPages\MultiGallery.cs" />
+ <Compile Include="GalleryPages\NavigationBarGallery.cs" />
+ <Compile Include="GalleryPages\NavigationMenuGallery.cs" />
+ <Compile Include="GalleryPages\OpenGLGallery.cs" />
+ <Compile Include="GalleryPages\ProgressBarGallery.cs" />
+ <Compile Include="GalleryPages\RelativeLayoutGallery.cs" />
+ <Compile Include="GalleryPages\ScrollGallery.cs" />
+ <Compile Include="GalleryPages\SearchBarGallery.cs" />
+ <Compile Include="GalleryPages\SettingsPage.cs" />
+ <Compile Include="GalleryPages\SliderGallery.cs" />
+ <Compile Include="GalleryPages\StackLayoutGallery.cs" />
+ <Compile Include="GalleryPages\SwitchGallery.cs" />
+ <Compile Include="GalleryPages\TableViewGallery.cs" />
+ <Compile Include="GalleryPages\TemplatedCarouselGallery.cs" />
+ <Compile Include="GalleryPages\TemplatedTabbedGallery.cs" />
+ <Compile Include="GalleryPages\UnevenListGallery.cs" />
+ <Compile Include="GalleryPages\WebViewGallery.cs" />
+ <Compile Include="GalleryPages\StyleGallery.cs" />
+ <Compile Include="GalleryPages\StyleXamlGallery.xaml.cs">
+ <DependentUpon>StyleXamlGallery.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="GalleryPages\MasterDetailPageTabletPage.cs" />
+ <Compile Include="Helpers\ITestCloudService.cs" />
+ <Compile Include="ControlGalleryPages\ToolbarItems.cs" />
+ <Compile Include="GalleryPages\AlertGallery.cs" />
+ <Compile Include="RootPages\RootMDPNavigationTabbedContentPage.cs" />
+ <Compile Include="Controls\Issue3076Button.cs" />
+ <Compile Include="ControlGalleryPages\ListRefresh.cs" />
+ <Compile Include="ControlGalleryPages\PinchGestureTestPage.cs" />
+ <Compile Include="ControlGalleryPages\AppearingGalleryPage.cs" />
+ <Compile Include="ControlGalleryPages\AutomationIDGallery.cs" />
+ <Compile Include="GalleryPages\AppLinkPageGallery.cs" />
+ <Compile Include="ControlGalleryPages\NativeBindingGalleryPage.cs" />
+ <Compile Include="GalleryPages\XamlNativeViews.xaml.cs">
+ <DependentUpon>XamlNativeViews.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="HanselForms\BaseView.cs" />
+ <Compile Include="HanselForms\HBaseViewModel.cs" />
+ <Compile Include="HanselForms\RootPage.cs" />
+ <Compile Include="HanselForms\WebsiteView.cs" />
+ <Compile Include="HanselForms\BlogPage.xaml.cs">
+ <DependentUpon>BlogPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="HanselForms\MyAbout.xaml.cs">
+ <DependentUpon>MyAbout.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="HanselForms\TwitterPage.xaml.cs">
+ <DependentUpon>TwitterPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="GalleryPages\MacTwitterDemo.xaml.cs">
+ <DependentUpon>MacTwitterDemo.xaml</DependentUpon>
+ </Compile>
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
+ <Import Project="..\.nuspec\Xamarin.Forms.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.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
- <ItemGroup>
- <EmbeddedResource Include="GalleryPages\crimson.jpg" />
- <EmbeddedResource Include="GalleryPages\XamlPage.xaml">
- <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
- </EmbeddedResource>
- <EmbeddedResource Include="ControlGalleryPages\BehaviorsAndTriggers.xaml">
- <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
- </EmbeddedResource>
- <EmbeddedResource Include="GalleryPages\StyleXamlGallery.xaml">
- <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
- </EmbeddedResource>
- <EmbeddedResource Include="GalleryPages\XamlNativeViews.xaml">
- <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
- </EmbeddedResource>
- </ItemGroup>
- <Import Project="..\Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems" Label="Shared" />
- <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
- <Import Project="..\packages\Xamarin.Insights.1.11.1\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.11.1\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets')" />
- <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
- <PropertyGroup>
- <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
- </PropertyGroup>
- <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
- </Target>
- <ItemGroup>
- <EmbeddedResource Include="ControlGalleryPages\LayoutAddPerformance.xaml">
- <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
- <SubType>Designer</SubType>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="GalleryPages\ControlTemplateXamlPage.xaml">
- <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
- <SubType>Designer</SubType>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <None Include="app.config" />
- <EmbeddedResource Include="controlgallery.config" />
- <None Include="packages.config" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="LegacyRepro\Page1.xaml">
- <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
- <SubType>Designer</SubType>
- </EmbeddedResource>
- <EmbeddedResource Include="LegacyRepro\SampleViewCell.xaml">
- <Generator>MSBuild:UpdateDeisgnTimeXaml</Generator>
- <SubType>Designer</SubType>
- </EmbeddedResource>
- </ItemGroup>
- <ItemGroup>
- <Reference Include="PCLStorage, Version=1.0.2.0, Culture=neutral, PublicKeyToken=286fe515a2c35b64, processorArchitecture=MSIL">
- <HintPath>..\packages\PCLStorage.1.0.2\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="PCLStorage.Abstractions, Version=1.0.2.0, Culture=neutral, PublicKeyToken=286fe515a2c35b64, processorArchitecture=MSIL">
- <HintPath>..\packages\PCLStorage.1.0.2\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="Xamarin.Insights">
- <HintPath>..\packages\Xamarin.Insights.1.12.3\lib\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.dll</HintPath>
- </Reference>
- </ItemGroup>
- <Target Name="BeforeBuild">
- <CreateItem Include="blank.config">
- <Output TaskParameter="Include" ItemName="ConfigFile" />
- </CreateItem>
- <Copy SourceFiles="@(ConfigFile)" DestinationFiles="controlgallery.config" Condition="!Exists('controlgallery.config')" />
- </Target>
- <Import Project="..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets')" />
+ <ItemGroup>
+ <EmbeddedResource Include="GalleryPages\crimson.jpg" />
+ <EmbeddedResource Include="GalleryPages\XamlPage.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ <EmbeddedResource Include="ControlGalleryPages\BehaviorsAndTriggers.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ <EmbeddedResource Include="GalleryPages\StyleXamlGallery.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ <EmbeddedResource Include="GalleryPages\XamlNativeViews.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ <EmbeddedResource Include="GalleryPages\MacTwitterDemo.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ <EmbeddedResource Include="HanselForms\MyAbout.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ <EmbeddedResource Include="HanselForms\BlogPage.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ <EmbeddedResource Include="HanselForms\TwitterPage.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
+ </ItemGroup>
+ <Import Project="..\Xamarin.Forms.Controls.Issues\Xamarin.Forms.Controls.Issues.Shared\Xamarin.Forms.Controls.Issues.Shared.projitems" Label="Shared" />
+ <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
+ <Import Project="..\packages\Xamarin.Insights.1.11.1\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.11.1\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets')" />
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
+ </Target>
+ <ItemGroup>
+ <EmbeddedResource Include="ControlGalleryPages\LayoutAddPerformance.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="GalleryPages\ControlTemplateXamlPage.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="app.config" />
+ <EmbeddedResource Include="controlgallery.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="LegacyRepro\Page1.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ <EmbeddedResource Include="LegacyRepro\SampleViewCell.xaml">
+ <Generator>MSBuild:UpdateDeisgnTimeXaml</Generator>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="PCLStorage, Version=1.0.2.0, Culture=neutral, PublicKeyToken=286fe515a2c35b64, processorArchitecture=MSIL">
+ <HintPath>..\packages\PCLStorage.1.0.2\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="PCLStorage.Abstractions, Version=1.0.2.0, Culture=neutral, PublicKeyToken=286fe515a2c35b64, processorArchitecture=MSIL">
+ <HintPath>..\packages\PCLStorage.1.0.2\lib\portable-net45+wp8+wpa81+win8+monoandroid+monotouch+Xamarin.iOS+Xamarin.Mac\PCLStorage.Abstractions.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="Xamarin.Insights">
+ <HintPath>..\packages\Xamarin.Insights.1.12.3\lib\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http">
+ <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http.Extensions">
+ <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Net.Http.Primitives">
+ <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <Target Name="BeforeBuild">
+ <CreateItem Include="blank.config">
+ <Output TaskParameter="Include" ItemName="ConfigFile" />
+ </CreateItem>
+ <Copy SourceFiles="@(ConfigFile)" DestinationFiles="controlgallery.config" Condition="!Exists('controlgallery.config')" />
+ </Target>
+ <Import Project="..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.12.3\build\portable-win+net45+wp80+windows8+wpa+MonoAndroid10+MonoTouch10\Xamarin.Insights.targets')" />
</Project> \ No newline at end of file
diff --git a/Xamarin.Forms.Controls/packages.config b/Xamarin.Forms.Controls/packages.config
index 3d498915..30525064 100644
--- a/Xamarin.Forms.Controls/packages.config
+++ b/Xamarin.Forms.Controls/packages.config
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
+ <package id="Microsoft.Bcl" version="1.1.10" targetFramework="portable45-net45+win8+wp8+wpa81" />
+ <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="portable45-net45+win8+wp8+wpa81" />
+ <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="portable45-net45+win8+wp8+wpa81" />
<package id="PCLStorage" version="1.0.2" targetFramework="portable45-net45+win8+wp8+wpa81" />
<package id="Xamarin.Insights" version="1.12.3" targetFramework="portable45-net45+win8+wp8+wpa81" />
</packages> \ No newline at end of file