diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml
index 9a5c14319..d67f7f3d6 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml
@@ -136,6 +136,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Controls/CartButton.xaml.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Controls/CartButton.xaml.cs
new file mode 100644
index 000000000..b46235a66
--- /dev/null
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Controls/CartButton.xaml.cs
@@ -0,0 +1,12 @@
+using Xamarin.Forms;
+
+namespace eShopOnContainers.Core.Controls
+{
+ public partial class CartButton : ContentView
+ {
+ public CartButton()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Effects/LineColorEffect.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Effects/LineColorEffect.cs
index 3c1759c24..2635b3a3f 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Effects/LineColorEffect.cs
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Effects/LineColorEffect.cs
@@ -59,7 +59,7 @@ namespace eShopOnContainers.Core.Effects
class EntryLineColorEffect : RoutingEffect
{
- public EntryLineColorEffect() : base("BikeSharing.EntryLineColorEffect")
+ public EntryLineColorEffect() : base("eShopOnContainers.EntryLineColorEffect")
{
}
}
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs
index cf7d8032d..f2a28a184 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/MainViewModel.cs
@@ -10,6 +10,8 @@ namespace eShopOnContainers.Core.ViewModels
{
public override Task InitializeAsync(object navigationData)
{
+ IsBusy = true;
+
if (navigationData is TabParameter)
{
var tabIndex = ((TabParameter)navigationData).TabIndex;
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CustomNavigationPage.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CustomNavigationPage.xaml
index 477ac142f..793425447 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CustomNavigationPage.xaml
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CustomNavigationPage.xaml
@@ -2,5 +2,7 @@
\ No newline at end of file
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/FiltersView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/FiltersView.xaml
index ba6f4b0fa..35e84655b 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/FiltersView.xaml
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/FiltersView.xaml
@@ -62,23 +62,39 @@
RowSpacing="0"
Margin="48, 24">
-
-
+
+
-
-
+
+
+
+
+
+ Style="{StaticResource FilterPickerStyle}">
+
+
+
+
+ Text="{Binding UserName.Value, Mode=TwoWay}">
+
+
+
+
+ Text="{Binding Password.Value, Mode=TwoWay}"
+ Style="{StaticResource EntryStyle}">
+
+
+
+
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml
index 08068718f..05684009b 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml
@@ -195,7 +195,7 @@
Grid.Row="2"
Opacity="0">
-
+
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderItemTemplate.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderItemTemplate.xaml
index 5d9b3a218..c1bdcb006 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderItemTemplate.xaml
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderItemTemplate.xaml
@@ -57,6 +57,7 @@
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/ProductTemplate.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/ProductTemplate.xaml
index b98ebff53..6dbb31b5f 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/ProductTemplate.xaml
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/ProductTemplate.xaml
@@ -3,6 +3,7 @@
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
+ xmlns:controls="clr-namespace:eShopOnContainers.Core.Controls;assembly=eShopOnContainers.Core"
x:Class="eShopOnContainers.Core.Views.Templates.ProductTemplate">
@@ -80,27 +81,9 @@
Grid.Row="0"
Grid.RowSpan="2"
Style="{StaticResource AddButtonStyle}">
-
-
-
-
-
-
-
-
-
+
+
+
+
+ CartButton.xaml
+
@@ -294,6 +297,12 @@
Designer
+
+
+ MSBuild:UpdateDesignTimeXaml
+ Designer
+
+
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/App.xaml b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/App.xaml
index 059e72563..25cd8e1e5 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/App.xaml
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/App.xaml
@@ -239,6 +239,52 @@
+
+
+
+
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Assets/circle_button_background.png b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Assets/circle_button_background.png
new file mode 100644
index 000000000..23f6dbbcb
Binary files /dev/null and b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Assets/circle_button_background.png differ
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Effects/EntryLineColorEffect.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Effects/EntryLineColorEffect.cs
index ce7f69f98..a35eb4970 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Effects/EntryLineColorEffect.cs
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Effects/EntryLineColorEffect.cs
@@ -10,6 +10,7 @@ using Windows.UI.Xaml.Controls;
using eShopOnContainers.Windows.Effects;
using eShopOnContainers.Core.Effects;
+[assembly: ResolutionGroupName("eShopOnContainers")]
[assembly: ExportEffect(typeof(EntryLineColorEffect), "EntryLineColorEffect")]
namespace eShopOnContainers.Windows.Effects
{
@@ -51,7 +52,7 @@ namespace eShopOnContainers.Windows.Effects
var lineColor = XamarinFormColorToWindowsColor(LineColorEffect.GetLineColor(Element));
control.BorderBrush = new Media.SolidColorBrush(lineColor);
- var style = App.Current.Resources["FormTextBoxStyle"] as Xaml.Style;
+ var style = Xaml.Application.Current.Resources["FormTextBoxStyle"] as Xaml.Style;
control.Style = style;
}
}
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Renderers/CustomTabbedPageRenderer.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Renderers/CustomTabbedPageRenderer.cs
index 1c213748e..7adfd7a10 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Renderers/CustomTabbedPageRenderer.cs
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/Renderers/CustomTabbedPageRenderer.cs
@@ -9,6 +9,5 @@ namespace eShopOnContainers.Windows.Renderers
[Preserve]
public class CustomTabbedPageRenderer : TabbedPageRenderer
{
-
}
}
\ No newline at end of file
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj
index 1cd8baba5..57e0400c2 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/eShopOnContainers.Windows.csproj
@@ -120,6 +120,7 @@
+
diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/Renderers/CustomTabbedPageRenderer.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/Renderers/CustomTabbedPageRenderer.cs
index 1ea673426..afb244925 100644
--- a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/Renderers/CustomTabbedPageRenderer.cs
+++ b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/Renderers/CustomTabbedPageRenderer.cs
@@ -1,10 +1,110 @@
-using Foundation;
+using eShopOnContainers.Core.Controls;
+using eShopOnContainers.iOS.Renderers;
+using Foundation;
+using System.Threading.Tasks;
+using UIKit;
+using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
+[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTabbedPageRenderer))]
namespace eShopOnContainers.iOS.Renderers
{
[Preserve]
public class CustomTabbedPageRenderer : TabbedRenderer
{
+ public override void ViewWillAppear(bool animated)
+ {
+ base.ViewWillAppear(animated);
+
+ for (var i = 0; i < TabBar.Items.Length; i++)
+ {
+ AddTabBadge(i);
+ }
+
+ Element.ChildAdded += OnTabAdded;
+ Element.ChildRemoved += OnTabRemoved;
+ }
+
+ private void AddTabBadge(int tabIndex)
+ {
+ var element = Tabbed.Children[tabIndex];
+ element.PropertyChanged += OnTabbedPagePropertyChanged;
+
+ if (TabBar.Items.Length > tabIndex)
+ {
+ var tabBarItem = TabBar.Items[tabIndex];
+ UpdateTabBadgeText(tabBarItem, element);
+
+ var tabColor = CustomTabbedPage.GetBadgeColor(element);
+ if (tabColor != Color.Default)
+ {
+ tabBarItem.BadgeColor = tabColor.ToUIColor();
+ }
+ }
+ }
+
+ private void UpdateTabBadgeText(UITabBarItem tabBarItem, Element element)
+ {
+ var text = CustomTabbedPage.GetBadgeText(element);
+
+ tabBarItem.BadgeValue = string.IsNullOrEmpty(text) ? null : text;
+ }
+
+ private void OnTabbedPagePropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ {
+ var page = sender as Page;
+ if (page == null)
+ return;
+
+ if (e.PropertyName == CustomTabbedPage.BadgeTextProperty.PropertyName)
+ {
+ var tabIndex = Tabbed.Children.IndexOf(page);
+
+ if (tabIndex < TabBar.Items.Length)
+ UpdateTabBadgeText(TabBar.Items[tabIndex], page);
+
+ return;
+ }
+
+ if (e.PropertyName == CustomTabbedPage.BadgeColorProperty.PropertyName)
+ {
+ var tabIndex = Tabbed.Children.IndexOf(page);
+ if (tabIndex < TabBar.Items.Length)
+ TabBar.Items[tabIndex].BadgeColor = CustomTabbedPage.GetBadgeColor(page).ToUIColor();
+ }
+ }
+
+ private async void OnTabAdded(object sender, ElementEventArgs e)
+ {
+ await Task.Delay(10);
+
+ var page = e.Element as Page;
+ if (page == null)
+ return;
+
+ var tabIndex = Tabbed.Children.IndexOf(page);
+ AddTabBadge(tabIndex);
+ }
+
+ private void OnTabRemoved(object sender, ElementEventArgs e)
+ {
+ e.Element.PropertyChanged -= OnTabbedPagePropertyChanged;
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ if (Tabbed != null)
+ {
+ foreach (var tab in Tabbed.Children)
+ {
+ tab.PropertyChanged -= OnTabbedPagePropertyChanged;
+ }
+
+ Tabbed.ChildAdded -= OnTabAdded;
+ Tabbed.ChildRemoved -= OnTabRemoved;
+ }
+
+ base.Dispose(disposing);
+ }
}
-}
+}
\ No newline at end of file