This commit is contained in:
Javier Suárez Ruiz 2016-11-14 11:26:10 +01:00
Родитель 068eb3bed9
Коммит 6ee3659f2c
41 изменённых файлов: 794 добавлений и 154 удалений

Просмотреть файл

@ -54,6 +54,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "sr
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{778289CA-31F7-4464-8C2A-612EE846F8A7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{9CC7814B-72A6-465B-A61C-57B512DEE303}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@ -523,9 +527,11 @@ Global
{48FC45C5-223F-4B59-AC77-6CBB1C561E85} = {932D8224-11F6-4D07-B109-DA28AD288A63}
{C10C7B69-CE4F-4167-928E-33B7FA1DFFC7} = {48FC45C5-223F-4B59-AC77-6CBB1C561E85}
{F0333D8E-0B27-42B7-B2C6-78F3657624E2} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}
{65116D1C-145B-4693-ABDA-F0FB6F425191} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
{62DBB163-9CA9-4818-B48B-13233DF37C24} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
{6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
{65116D1C-145B-4693-ABDA-F0FB6F425191} = {778289CA-31F7-4464-8C2A-612EE846F8A7}
{62DBB163-9CA9-4818-B48B-13233DF37C24} = {9CC7814B-72A6-465B-A61C-57B512DEE303}
{6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {9CC7814B-72A6-465B-A61C-57B512DEE303}
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {9CC7814B-72A6-465B-A61C-57B512DEE303}
{778289CA-31F7-4464-8C2A-612EE846F8A7} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
{9CC7814B-72A6-465B-A61C-57B512DEE303} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "e
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{65D002E7-E869-491C-ABA8-9650CEAF677A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{8F848898-6B21-4905-AE2E-B3ABDEDA1963}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@ -258,4 +262,10 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{62DBB163-9CA9-4818-B48B-13233DF37C24} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
{6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
{65116D1C-145B-4693-ABDA-F0FB6F425191} = {65D002E7-E869-491C-ABA8-9650CEAF677A}
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -100,6 +100,8 @@
<!-- CONVERTERS -->
<converters:ToUpperConverter x:Key="ToUpperConverter" />
<converters:DatetimeConverter x:Key="DatetimeConverter" />
<converters:ItemTappedEventArgsConverter x:Key="ItemTappedEventArgsConverter" />
<!-- STYLES -->
<Style x:Key="EntryStyle"
TargetType="{x:Type Entry}">

Просмотреть файл

@ -0,0 +1,38 @@
using System;
using Xamarin.Forms;
namespace eShopOnContainers.Core.Behaviors.Base
{
public class BindableBehavior<T> : Behavior<T> where T : BindableObject
{
public T AssociatedObject { get; private set; }
protected override void OnAttachedTo(T visualElement)
{
base.OnAttachedTo(visualElement);
AssociatedObject = visualElement;
if (visualElement.BindingContext != null)
BindingContext = visualElement.BindingContext;
visualElement.BindingContextChanged += OnBindingContextChanged;
}
private void OnBindingContextChanged(object sender, EventArgs e)
{
OnBindingContextChanged();
}
protected override void OnDetachingFrom(T view)
{
view.BindingContextChanged -= OnBindingContextChanged;
}
protected override void OnBindingContextChanged()
{
base.OnBindingContextChanged();
BindingContext = AssociatedObject.BindingContext;
}
}
}

Просмотреть файл

@ -0,0 +1,134 @@
using eShopOnContainers.Core.Behaviors.Base;
using System;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Windows.Input;
using Xamarin.Forms;
namespace eShopOnContainers.Core.Behaviors
{
public class EventToCommandBehavior : BindableBehavior<View>
{
public static BindableProperty EventNameProperty =
BindableProperty.CreateAttached("EventName", typeof(string), typeof(EventToCommandBehavior), null,
BindingMode.OneWay);
public static BindableProperty CommandProperty =
BindableProperty.CreateAttached("Command", typeof(ICommand), typeof(EventToCommandBehavior), null,
BindingMode.OneWay);
public static BindableProperty CommandParameterProperty =
BindableProperty.CreateAttached("CommandParameter", typeof(object), typeof(EventToCommandBehavior), null,
BindingMode.OneWay);
public static BindableProperty EventArgsConverterProperty =
BindableProperty.CreateAttached("EventArgsConverter", typeof(IValueConverter), typeof(EventToCommandBehavior), null,
BindingMode.OneWay);
public static BindableProperty EventArgsConverterParameterProperty =
BindableProperty.CreateAttached("EventArgsConverterParameter", typeof(object), typeof(EventToCommandBehavior), null,
BindingMode.OneWay);
private Delegate _handler;
private EventInfo _eventInfo;
public string EventName
{
get { return (string)GetValue(EventNameProperty); }
set { SetValue(EventNameProperty, value); }
}
public ICommand Command
{
get { return (ICommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
public object CommandParameter
{
get { return GetValue(CommandParameterProperty); }
set { SetValue(CommandParameterProperty, value); }
}
public IValueConverter EventArgsConverter
{
get { return (IValueConverter)GetValue(EventArgsConverterProperty); }
set { SetValue(EventArgsConverterProperty, value); }
}
public object EventArgsConverterParameter
{
get { return GetValue(EventArgsConverterParameterProperty); }
set { SetValue(EventArgsConverterParameterProperty, value); }
}
protected override void OnAttachedTo(View visualElement)
{
base.OnAttachedTo(visualElement);
var events = AssociatedObject.GetType().GetRuntimeEvents().ToArray();
if (events.Any())
{
_eventInfo = events.FirstOrDefault(e => e.Name == EventName);
if (_eventInfo == null)
throw new ArgumentException(String.Format("EventToCommand: Can't find any event named '{0}' on attached type", EventName));
AddEventHandler(_eventInfo, AssociatedObject, OnFired);
}
}
protected override void OnDetachingFrom(View view)
{
if (_handler != null)
_eventInfo.RemoveEventHandler(AssociatedObject, _handler);
base.OnDetachingFrom(view);
}
private void AddEventHandler(EventInfo eventInfo, object item, Action<object, EventArgs> action)
{
var eventParameters = eventInfo.EventHandlerType
.GetRuntimeMethods().First(m => m.Name == "Invoke")
.GetParameters()
.Select(p => Expression.Parameter(p.ParameterType))
.ToArray();
var actionInvoke = action.GetType()
.GetRuntimeMethods().First(m => m.Name == "Invoke");
_handler = Expression.Lambda(
eventInfo.EventHandlerType,
Expression.Call(Expression.Constant(action), actionInvoke, eventParameters[0], eventParameters[1]),
eventParameters
)
.Compile();
eventInfo.AddEventHandler(item, _handler);
}
private void OnFired(object sender, EventArgs eventArgs)
{
if (Command == null)
return;
var parameter = CommandParameter;
if (eventArgs != null && eventArgs != EventArgs.Empty)
{
parameter = eventArgs;
if (EventArgsConverter != null)
{
parameter = EventArgsConverter.Convert(eventArgs, typeof(object), EventArgsConverterParameter, CultureInfo.CurrentUICulture);
}
}
if (Command.CanExecute(parameter))
{
Command.Execute(parameter);
}
}
}
}

Просмотреть файл

@ -0,0 +1,23 @@
using System;
using System.Globalization;
using Xamarin.Forms;
namespace eShopOnContainers.Core.Converters
{
public class ItemTappedEventArgsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var eventArgs = value as ItemTappedEventArgs;
if (eventArgs == null)
throw new ArgumentException("Expected TappedEventArgs as value", "value");
return eventArgs.Item;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

Просмотреть файл

@ -0,0 +1,13 @@
using System;
namespace eShopOnContainers.Core.Models.Catalog
{
public class CatalogItem
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Image { get; set; }
}
}

Просмотреть файл

@ -1,12 +1,21 @@
using System;
using System.Collections.Generic;
namespace eShopOnContainers.Core.Models.Orders
{
public class Order
{
public long OrderNumber { get; set; }
public int SequenceNumber { get; set; }
public double Total { get; set; }
public DateTime Date { get; set; }
public DateTime OrderDate { get; set; }
public OrderStatus Status { get; set; }
public User.User ShippingAddress { get; set; }
public int BuyerId { get; set; }
public List<OrderItem> OrderItems { get; set; }
public string OrderNumber
{
get { return string.Format("{0}/{1}-{2}", OrderDate.Year, OrderDate.Month, SequenceNumber); }
}
}
}
}

Просмотреть файл

@ -0,0 +1,20 @@
using System;
namespace eShopOnContainers.Core.Models.Orders
{
public class OrderItem
{
public int ProductId { get; set; }
public Guid OrderId { get; set; }
public string ProductName { get; set; }
public decimal UnitPrice { get; set; }
public int Quantity { get; set; }
public decimal Discount { get; set; }
public decimal Total { get { return Quantity * UnitPrice; } }
public override string ToString()
{
return String.Format("Product Id: {0}, Quantity: {1}", ProductId, Quantity);
}
}
}

Просмотреть файл

@ -1,9 +0,0 @@
namespace eShopOnContainers.Core.Models.Products
{
public class Product
{
public string Name { get; set; }
public string Image { get; set; }
public double Price { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,22 @@
namespace eShopOnContainers.Core.Models.User
{
public class User
{
public string Name { get; set; }
public string LastName { get; set; }
public string CardNumber { get; set; }
public string SecurityNumber { get; set; }
public string Expiration { get; set; }
public string CardHolderName { get; set; }
public int CardType { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string StateCode { get; set; }
public string Country { get; set; }
public string CountryCode { get; set; }
public string ZipCode { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
}
}

Просмотреть файл

@ -0,0 +1,23 @@
using eShopOnContainers.Core.Models.Catalog;
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace eShopOnContainers.Core.Services.Catalog
{
public class CatalogMockService : ICatalogService
{
public async Task<ObservableCollection<CatalogItem>> GetProductsAsync()
{
await Task.Delay(500);
return new ObservableCollection<CatalogItem>
{
new CatalogItem { Id = 1, Image = Device.OS != TargetPlatform.Windows ? "fake_product_01" : "Assets/fake_product_01.png", Name = ".NET Bot Blue Sweatshirt (M)", Price = 19.50M },
new CatalogItem { Id = 2, Image = Device.OS != TargetPlatform.Windows ? "fake_product_02": "Assets/fake_product_02.png", Name = ".NET Bot Purple Sweatshirt (M)", Price = 19.50M },
new CatalogItem { Id = 3, Image = Device.OS != TargetPlatform.Windows ? "fake_product_03": "Assets/fake_product_03.png", Name = ".NET Bot Black Sweatshirt (M)", Price = 19.95M }
};
}
}
}

Просмотреть файл

@ -0,0 +1,11 @@
using eShopOnContainers.Core.Models.Catalog;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
namespace eShopOnContainers.Core.Services.Catalog
{
public interface ICatalogService
{
Task<ObservableCollection<CatalogItem>> GetProductsAsync();
}
}

Просмотреть файл

@ -152,7 +152,6 @@ namespace eShopOnContainers.Services
_mappings.Add(typeof(LoginViewModel), typeof(LoginView));
_mappings.Add(typeof(MainViewModel), typeof(MainView));
_mappings.Add(typeof(OrderDetailViewModel), typeof(OrderDetailView));
_mappings.Add(typeof(OrdersViewModel), typeof(OrdersView));
_mappings.Add(typeof(ProfileViewModel), typeof(ProfileView));
}
}

Просмотреть файл

@ -1,29 +0,0 @@
using eShopOnContainers.Core.Models.Orders;
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
namespace eShopOnContainers.Core.Services.Orders
{
public class FakeOrdersService : IOrdersService
{
public async Task<ObservableCollection<Order>> GetOrdersAsync()
{
await Task.Delay(500);
return new ObservableCollection<Order>
{
new Order { OrderNumber = 0123456789, Total = 45.30, Date = DateTime.Now, Status = OrderStatus.Delivered },
new Order { OrderNumber = 9123456780, Total = 39.95, Date = DateTime.Now, Status = OrderStatus.Delivered },
new Order { OrderNumber = 8765432190, Total = 15.00, Date = DateTime.Now, Status = OrderStatus.Delivered },
};
}
public async Task<Order> GetCartAsync()
{
await Task.Delay(500);
return new Order { OrderNumber = 0123456789, Total = 45.99, Date = DateTime.Now, Status = OrderStatus.Pending };
}
}
}

Просмотреть файл

@ -10,4 +10,4 @@ namespace eShopOnContainers.Core.Services.Orders
Task<Order> GetCartAsync();
}
}
}

Просмотреть файл

@ -0,0 +1,39 @@
using eShopOnContainers.Core.Models.Orders;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
namespace eShopOnContainers.Core.Services.Orders
{
public class OrdersMockService : IOrdersService
{
public async Task<ObservableCollection<Order>> GetOrdersAsync()
{
await Task.Delay(500);
return new ObservableCollection<Order>
{
new Order { SequenceNumber = 123, Total = 56.40, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = GetOrderItems() },
new Order { SequenceNumber = 132, Total = 56.40, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = GetOrderItems() },
new Order { SequenceNumber = 231, Total = 56.40, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = GetOrderItems() },
};
}
public async Task<Order> GetCartAsync()
{
await Task.Delay(500);
return new Order { SequenceNumber = 0123456789, Total = 56.40, OrderDate = DateTime.Now, Status = OrderStatus.Pending, OrderItems = GetOrderItems() };
}
private List<OrderItem> GetOrderItems()
{
return new List<OrderItem>
{
new OrderItem { OrderId = Guid.NewGuid(), ProductId = 1, Discount = 15, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 16.50M },
new OrderItem { OrderId = Guid.NewGuid(), ProductId = 3, Discount = 0, ProductName = ".NET Bot Black Sweatshirt (M)", Quantity = 2, UnitPrice = 19.95M }
};
}
}
}

Просмотреть файл

@ -1,22 +0,0 @@
using eShopOnContainers.Core.Models.Products;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace eShopOnContainers.Core.Services.Products
{
public class FakeProductsService : IProductsService
{
public async Task<ObservableCollection<Product>> GetProductsAsync()
{
await Task.Delay(500);
return new ObservableCollection<Product>
{
new Product { Image = Device.OS != TargetPlatform.Windows ? "fake_product_01" : "Assets/fake_product_01.png", Name = ".NET Bot Blue Sweatshirt (M)", Price = 19.50 },
new Product { Image = Device.OS != TargetPlatform.Windows ? "fake_product_02": "Assets/fake_product_02.png", Name = ".NET Bot Purple Sweatshirt (M)", Price = 19.50 },
new Product { Image = Device.OS != TargetPlatform.Windows ? "fake_product_03": "Assets/fake_product_03.png", Name = ".NET Bot Black Sweatshirt (M)", Price = 19.95 }
};
}
}
}

Просмотреть файл

@ -1,11 +0,0 @@
using eShopOnContainers.Core.Models.Products;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
namespace eShopOnContainers.Core.Services.Products
{
public interface IProductsService
{
Task<ObservableCollection<Product>> GetProductsAsync();
}
}

Просмотреть файл

@ -1,9 +1,9 @@
using Microsoft.Practices.Unity;
using eShopOnContainers.Core.Services.Orders;
using eShopOnContainers.Core.Services.Products;
using eShopOnContainers.Core.ViewModels;
using eShopOnContainers.Services;
using System;
using eShopOnContainers.Core.Services.Catalog;
namespace eShopOnContainers.ViewModels.Base
{
@ -28,8 +28,8 @@ namespace eShopOnContainers.ViewModels.Base
// services
_unityContainer.RegisterType<IDialogService, DialogService>();
RegisterSingleton<INavigationService, NavigationService>();
_unityContainer.RegisterType<IProductsService, FakeProductsService>();
_unityContainer.RegisterType<IOrdersService, FakeOrdersService>();
_unityContainer.RegisterType<ICatalogService, CatalogMockService>();
_unityContainer.RegisterType<IOrdersService, OrdersMockService>();
// view models
_unityContainer.RegisterType<CartViewModel>();
@ -37,7 +37,6 @@ namespace eShopOnContainers.ViewModels.Base
_unityContainer.RegisterType<LoginViewModel>();
_unityContainer.RegisterType<MainViewModel>();
_unityContainer.RegisterType<OrderDetailViewModel>();
_unityContainer.RegisterType<OrdersViewModel>();
_unityContainer.RegisterType<ProfileViewModel>();
}

Просмотреть файл

@ -1,8 +1,31 @@
using eShopOnContainers.ViewModels.Base;
using System.Threading.Tasks;
using eShopOnContainers.Core.Models.Orders;
using eShopOnContainers.ViewModels.Base;
namespace eShopOnContainers.Core.ViewModels
{
public class OrderDetailViewModel : ViewModelBase
{
private Order _order;
public Order Order
{
get { return _order; }
set
{
_order = value;
RaisePropertyChanged(() => Order);
}
}
public override Task InitializeAsync(object navigationData)
{
if(navigationData is Order)
{
Order = navigationData as Order;
}
return base.InitializeAsync(navigationData);
}
}
}
}

Просмотреть файл

@ -1,8 +0,0 @@
using eShopOnContainers.ViewModels.Base;
namespace eShopOnContainers.Core.ViewModels
{
public class OrdersViewModel : ViewModelBase
{
}
}

Просмотреть файл

@ -31,6 +31,8 @@ namespace eShopOnContainers.Core.ViewModels
public ICommand LogoutCommand => new Command(LogoutAsync);
public ICommand OrderDetailCommand => new Command<Order>(OrderDetail);
public override async Task InitializeAsync(object navigationData)
{
Orders = await _ordersService.GetOrdersAsync();
@ -41,5 +43,10 @@ namespace eShopOnContainers.Core.ViewModels
await NavigationService.NavigateToAsync<LoginViewModel>();
await NavigationService.RemoveBackStackAsync();
}
private void OrderDetail(Order order)
{
NavigationService.NavigateToAsync<OrderDetailViewModel>(order);
}
}
}

Просмотреть файл

@ -1,26 +1,26 @@
using System.Threading.Tasks;
using eShopOnContainers.ViewModels.Base;
using eShopOnContainers.Core.Services.Products;
using System.Collections.ObjectModel;
using eShopOnContainers.Core.Models.Products;
using Xamarin.Forms;
using eShopOnContainers.Core.ViewModels.Base;
using eShopOnContainers.Core.Models.Catalog;
using eShopOnContainers.Core.Services.Catalog;
namespace eShopOnContainers.Core.ViewModels
{
public class ProductsViewModel : ViewModelBase
{
private ObservableCollection<Product> _products;
private Product _product;
private ObservableCollection<CatalogItem> _products;
private CatalogItem _product;
private IProductsService _productsService;
private ICatalogService _productsService;
public ProductsViewModel(IProductsService productsService)
public ProductsViewModel(ICatalogService productsService)
{
_productsService = productsService;
}
public ObservableCollection<Product> Products
public ObservableCollection<CatalogItem> Products
{
get { return _products; }
set
@ -30,7 +30,7 @@ namespace eShopOnContainers.Core.ViewModels
}
}
public Product Product
public CatalogItem Product
{
get { return _product; }
set

Просмотреть файл

@ -9,4 +9,4 @@ namespace eShopOnContainers.Core.Views
InitializeComponent();
}
}
}
}

Просмотреть файл

@ -29,8 +29,7 @@
</views:ProfileView>
<views:CartView
x:Name="CartView"
controls:CustomTabbedPage.BadgeText="{Binding BadgeCount}"
controls:CustomTabbedPage.BadgeColor="{StaticResource LightGreenColor}">
controls:CustomTabbedPage.BadgeText="{Binding BadgeCount}">
<views:HomeView.Icon>
<OnPlatform
x:TypeArguments="FileImageSource"

Просмотреть файл

@ -1,6 +1,233 @@
<?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="eShopOnContainers.Core.Views.OrderDetailView">
x:Class="eShopOnContainers.Core.Views.OrderDetailView"
xmlns:templates="clr-namespace:eShopOnContainers.Core.Views.Templates;assembly=eShopOnContainers.Core"
xmlns:animations="clr-namespace:eShopOnContainers.Core.Animations;assembly=eShopOnContainers.Core"
xmlns:triggers="clr-namespace:eShopOnContainers.Core.Triggers;assembly=eShopOnContainers.Core"
Title="{Binding Order.SequenceNumber}">
<ContentPage.Resources>
<ResourceDictionary>
<Style x:Key="OrderTitleStyle"
TargetType="{x:Type Label}">
<Setter Property="FontFamily"
Value="{StaticResource MontserratRegular}" />
<Setter Property="FontSize"
Value="{StaticResource MediumSize}" />
<Setter Property="TextColor"
Value="Gray" />
</Style>
<Style x:Key="OrderContentStyle"
TargetType="{x:Type Label}"
BasedOn="{StaticResource OrderTitleStyle}">
<Setter Property="TextColor"
Value="Black" />
</Style>
<Style x:Key="ShippingAddressStyle"
TargetType="{x:Type Label}"
BasedOn="{StaticResource OrderTitleStyle}">
<Setter Property="FontSize"
Value="{StaticResource LargeSize}" />
<Setter Property="TextColor"
Value="Black" />
</Style>
<Style x:Key="AddressStyle"
TargetType="{x:Type Label}"
BasedOn="{StaticResource OrderTitleStyle}">
<Setter Property="FontSize"
Value="{StaticResource LittleSize}" />
<Setter Property="TextColor"
Value="Black" />
</Style>
<Style x:Key="OrderTotalStyle"
TargetType="{x:Type Label}">
<Setter Property="FontFamily"
Value="{StaticResource MontserratRegular}" />
<Setter Property="FontSize"
Value="{StaticResource LargerSize}" />
<Setter Property="HorizontalOptions"
Value="End" />
</Style>
<animations:StoryBoard
x:Key="OrderInfoAnimation"
Target="{x:Reference OrderInfo}">
<animations:FadeToAnimation
Opacity="1"
Duration="500"
Delay="100"/>
</animations:StoryBoard>
<animations:StoryBoard
x:Key="ShippingAddressAnimation"
Target="{x:Reference ShippingAddress}">
<animations:FadeToAnimation
Opacity="1"
Duration="1000"
Delay="200"/>
</animations:StoryBoard>
<animations:StoryBoard
x:Key="OrderItemsAnimation"
Target="{x:Reference OrderItems}">
<animations:FadeToAnimation
Opacity="1"
Duration="1500"
Delay="300"/>
</animations:StoryBoard>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Triggers>
<EventTrigger
Event="Appearing">
<triggers:BeginAnimation
Animation="{StaticResource OrderInfoAnimation}" />
<triggers:BeginAnimation
Animation="{StaticResource ShippingAddressAnimation}" />
<triggers:BeginAnimation
Animation="{StaticResource OrderItemsAnimation}" />
</EventTrigger>
</ContentPage.Triggers>
<ScrollView>
<Grid
BackgroundColor="{StaticResource BackgroundColor}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- ORDER INFO -->
<Grid
x:Name="OrderInfo"
Opacity="0">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<StackLayout
Grid.Column="0"
Grid.Row="0"
Margin="12">
<Label
Text="ORDER NUMBER"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Order.OrderNumber, Converter={StaticResource ToUpperConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
<StackLayout
Grid.Column="0"
Grid.Row="1"
Margin="12">
<Label
Text="TOTAL"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Order.Total, StringFormat='${0:N}', Converter={StaticResource ToUpperConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
<StackLayout
Grid.Column="1"
Grid.Row="0"
Margin="12">
<Label
Text="DATE"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Order.OrderDate, Converter={StaticResource DatetimeConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
<StackLayout
Grid.Column="1"
Grid.Row="1"
Margin="12">
<Label
Text="STATUS"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Order.Status, Converter={StaticResource ToUpperConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
</Grid>
<!-- SHIPPING ADDRESS -->
<Grid
x:Name="ShippingAddress"
Grid.Row="1"
Margin="12"
Opacity="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Text="SHIPPING ADDRESS"
Style="{StaticResource ShippingAddressStyle}"/>
<StackLayout
Grid.Row="1">
<Label
Text="120 E 87th Street"
Style="{StaticResource AddressStyle}"/>
<Label
Text="Seattle, WA"
Style="{StaticResource AddressStyle}"/>
<Label
Text="98122"
Style="{StaticResource AddressStyle}"/>
<Label
Text="United States"
Style="{StaticResource AddressStyle}"/>
</StackLayout>
</Grid>
<!-- ORDER ITEMS -->
<Grid
x:Name="OrderItems"
Grid.Row="2"
Opacity="0">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ListView
Grid.Row="0"
ItemsSource="{Binding Order.OrderItems}"
HasUnevenRows="True"
SeparatorVisibility="None"
VerticalOptions="FillAndExpand"
CachingStrategy="RecycleElement">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<templates:OrderItemTemplate />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<StackLayout
Grid.Row="1"
Margin="0,0,0,24">
<Label
Grid.Row="0"
Text="TOTAL"
TextColor="{StaticResource BlackColor}"
Style="{StaticResource OrderTotalStyle}"/>
<Label
Grid.Row="1"
Text="{Binding Order.Total, StringFormat='${0:N}'}"
TextColor="{StaticResource GreenColor}"
Style="{StaticResource OrderTotalStyle}"/>
</StackLayout>
</Grid>
</Grid>
</ScrollView>
</ContentPage>

Просмотреть файл

@ -1,6 +0,0 @@
<?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="eShopOnContainers.Core.Views.OrdersView">
</ContentPage>

Просмотреть файл

@ -1,12 +0,0 @@
using Xamarin.Forms;
namespace eShopOnContainers.Core.Views
{
public partial class OrdersView : ContentPage
{
public OrdersView()
{
InitializeComponent();
}
}
}

Просмотреть файл

@ -4,6 +4,7 @@
x:Class="eShopOnContainers.Core.Views.ProfileView"
xmlns:views="clr-namespace:eShopOnContainers.Core.Views;assembly=eShopOnContainers.Core"
xmlns:templates="clr-namespace:eShopOnContainers.Core.Views.Templates;assembly=eShopOnContainers.Core"
xmlns:behaviors="clr-namespace:eShopOnContainers.Core.Behaviors;assembly=eShopOnContainers.Core"
Title="My profile">
<ContentPage.Resources>
<ResourceDictionary>
@ -83,6 +84,12 @@
HasUnevenRows="True"
SeparatorVisibility="None"
CachingStrategy="RecycleElement">
<ListView.Behaviors>
<behaviors:EventToCommandBehavior
EventName="ItemTapped"
Command="{Binding OrderDetailCommand}"
EventArgsConverter="{StaticResource ItemTappedEventArgsConverter}" />
</ListView.Behaviors>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>

Просмотреть файл

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<ContentView
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="eShopOnContainers.Core.Views.Templates.OrderItemTemplate">
<ContentView.Resources>
<ResourceDictionary>
<Style x:Key="OrderItemTitleStyle"
TargetType="{x:Type Label}">
<Setter Property="FontFamily"
Value="{StaticResource MontserratRegular}" />
<Setter Property="FontSize"
Value="{StaticResource MediumSize}" />
<Setter Property="TextColor"
Value="{StaticResource BlackColor}" />
</Style>
<Style x:Key="OrderItemUnitPriceStyle"
TargetType="{x:Type Label}">
<Setter Property="FontFamily"
Value="{StaticResource MontserratRegular}" />
<Setter Property="FontSize"
Value="{StaticResource MidMediumSize}" />
<Setter Property="TextColor"
Value="{StaticResource BlackColor}" />
<Setter Property="HorizontalOptions"
Value="Start" />
</Style>
<Style x:Key="OrderItemQuantityStyle"
TargetType="{x:Type Label}">
<Setter Property="FontFamily"
Value="{StaticResource MontserratRegular}" />
<Setter Property="FontSize"
Value="{StaticResource MidMediumSize}" />
<Setter Property="TextColor"
Value="{StaticResource BlackColor}" />
<Setter Property="HorizontalOptions"
Value="End" />
</Style>
<Style x:Key="OrderTotalStyle"
TargetType="{x:Type Label}">
<Setter Property="FontFamily"
Value="{StaticResource MontserratRegular}" />
<Setter Property="FontSize"
Value="{StaticResource LargerSize}" />
<Setter Property="TextColor"
Value="{StaticResource GreenColor}" />
<Setter Property="HorizontalOptions"
Value="End" />
</Style>
</ResourceDictionary>
</ContentView.Resources>
<ContentView.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="1" />
</Grid.RowDefinitions>
<Image
Grid.Column="0"
Grid.Row="0"
Source="{Binding Image}"/>
<Grid
Grid.Column="1"
Grid.Row="0"
Margin="6">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Label
Grid.Row="0"
Text="{Binding ProductName, Converter={StaticResource ToUpperConverter}}"/>
<Grid
Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
Text="{Binding UnitPrice, StringFormat='${0:N}'}"
Style="{StaticResource OrderItemUnitPriceStyle}"/>
<Label
Grid.Column="1"
Text="{Binding Quantity}"
Style="{StaticResource OrderItemQuantityStyle}"/>
</Grid>
<Label
Grid.Row="2"
Text="{Binding Total, StringFormat='${0:N}'}"
Style="{StaticResource OrderTotalStyle}"/>
</Grid>
<Grid
Grid.Column="0"
Grid.ColumnSpan="2"
Grid.Row="1"
BackgroundColor="Gray"/>
</Grid>
</ContentView.Content>
</ContentView>

Просмотреть файл

@ -0,0 +1,12 @@
using Xamarin.Forms;
namespace eShopOnContainers.Core.Views.Templates
{
public partial class OrderItemTemplate : ContentView
{
public OrderItemTemplate()
{
InitializeComponent();
}
}
}

Просмотреть файл

@ -22,10 +22,10 @@
<Setter Property="TextColor"
Value="Black" />
</Style>
</ResourceDictionary>
</ContentView.Resources>
<ContentView.Content>
<ContentView.Content>
<Grid
BackgroundColor="{StaticResource BackgroundColor}">
<Grid.ColumnDefinitions>
@ -67,7 +67,7 @@
Text="DATE"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Date, Converter={StaticResource DatetimeConverter}}"
Text="{Binding OrderDate, Converter={StaticResource DatetimeConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
<StackLayout
@ -87,5 +87,5 @@
Grid.Row="2"
BackgroundColor="Gray"/>
</Grid>
</ContentView.Content>
</ContentView>
</ContentView.Content>
</ContentView>

Просмотреть файл

@ -9,4 +9,4 @@ namespace eShopOnContainers.Core.Views.Templates
InitializeComponent();
}
}
}
}

Просмотреть файл

@ -9,4 +9,4 @@ namespace eShopOnContainers.Core.Views.Templates
InitializeComponent();
}
}
}
}

Просмотреть файл

@ -42,25 +42,30 @@
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="Behaviors\Base\BindableBehavior.cs" />
<Compile Include="Behaviors\EventToCommandBehavior.cs" />
<Compile Include="Controls\BindablePicker.cs" />
<Compile Include="Controls\CustomTabbedPage.cs" />
<Compile Include="Converters\DatetimeConverter.cs" />
<Compile Include="Converters\ItemTappedConverter.cs" />
<Compile Include="Converters\ToUpperConverter.cs" />
<Compile Include="Effects\LineColorEffect.cs" />
<Compile Include="Extensions\AnimationExtension.cs" />
<Compile Include="Helpers\EasingHelper.cs" />
<Compile Include="Models\Orders\Order.cs" />
<Compile Include="Models\Orders\OrderItem.cs" />
<Compile Include="Models\Orders\OrderStatus.cs" />
<Compile Include="Models\Products\Product.cs" />
<Compile Include="Models\Catalog\CatalogItem.cs" />
<Compile Include="Models\User\User.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Services\Dialog\DialogService.cs" />
<Compile Include="Services\Dialog\IDialogService.cs" />
<Compile Include="Services\Navigation\INavigationService.cs" />
<Compile Include="Services\Navigation\NavigationService.cs" />
<Compile Include="Services\Orders\FakeOrdersService.cs" />
<Compile Include="Services\Orders\OrdersMockService.cs" />
<Compile Include="Services\Orders\IOrdersService.cs" />
<Compile Include="Services\Products\FakeProductsService.cs" />
<Compile Include="Services\Products\IProductsService.cs" />
<Compile Include="Services\Catalog\CatalogMockService.cs" />
<Compile Include="Services\Catalog\ICatalogService.cs" />
<Compile Include="Triggers\BeginAnimation.cs" />
<Compile Include="Validations\IsNotNullOrEmptyRule.cs" />
<Compile Include="Validations\IValidationRule.cs" />
@ -75,7 +80,6 @@
<Compile Include="ViewModels\LoginViewModel.cs" />
<Compile Include="ViewModels\MainViewModel.cs" />
<Compile Include="ViewModels\OrderDetailViewModel.cs" />
<Compile Include="ViewModels\OrdersViewModel.cs" />
<Compile Include="ViewModels\ProfileViewModel.cs" />
<Compile Include="Views\CartView.xaml.cs">
<DependentUpon>CartView.xaml</DependentUpon>
@ -98,12 +102,12 @@
<Compile Include="Views\OrderDetailView.xaml.cs">
<DependentUpon>OrderDetailView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\OrdersView.xaml.cs">
<DependentUpon>OrdersView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\ProfileView.xaml.cs">
<DependentUpon>ProfileView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\Templates\OrderItemTemplate.xaml.cs">
<DependentUpon>OrderItemTemplate.xaml</DependentUpon>
</Compile>
<Compile Include="Views\Templates\OrderTemplate.xaml.cs">
<DependentUpon>OrderTemplate.xaml</DependentUpon>
</Compile>
@ -215,12 +219,6 @@
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Views\OrdersView.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Views\CustomNavigationPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
@ -245,6 +243,12 @@
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Views\Templates\OrderItemTemplate.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

Просмотреть файл

@ -153,7 +153,7 @@
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Forms.Pages, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\Xamarin.Forms.Pages.2.3.0.38-pre2\lib\MonoAndroid10\Xamarin.Forms.Pages.dll</HintPath>
<HintPath>..\..\packages\Xamarin.Forms.Pages.2.3.2.118-pre1\lib\MonoAndroid10\Xamarin.Forms.Pages.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
@ -282,9 +282,9 @@
<ErrorText>Este proyecto hace referencia a los paquetes NuGet que faltan en este equipo. Use la restauración de paquetes NuGet para descargarlos. Para obtener más información, consulte http://go.microsoft.com/fwlink/?LinkID=322105. El archivo que falta es {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets'))" />
<Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets'))" />
<Error Condition="!Exists('..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets'))" />
<Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets'))" />
</Target>
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
<Import Project="..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets" Condition="Exists('..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets')" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>

Просмотреть файл

@ -19,7 +19,7 @@
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="monoandroid70" />
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="monoandroid70" />
<package id="Xamarin.Forms.Pages" version="2.3.0.38-pre2" targetFramework="monoandroid70" />
<package id="Xamarin.Forms.Pages" version="2.3.2.118-pre1" targetFramework="monoandroid70" />
<package id="Xamarin.Forms.Theme.Base" version="1.0.0.43-pre1" targetFramework="monoandroid70" />
<package id="Xamarin.Forms.Theme.Light" version="1.0.0.43-pre1" targetFramework="monoandroid70" />
</packages>

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 595 KiB

Просмотреть файл

@ -176,7 +176,7 @@
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Forms.Pages, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\Xamarin.Forms.Pages.2.3.0.38-pre2\lib\Xamarin.iOS10\Xamarin.Forms.Pages.dll</HintPath>
<HintPath>..\..\packages\Xamarin.Forms.Pages.2.3.2.118-pre1\lib\Xamarin.iOS10\Xamarin.Forms.Pages.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
@ -221,13 +221,13 @@
<BundleResource Include="Resources\fake_product_02.png" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Este proyecto hace referencia a los paquetes NuGet que faltan en este equipo. Use la restauración de paquetes NuGet para descargarlos. Para obtener más información, consulte http://go.microsoft.com/fwlink/?LinkID=322105. El archivo que falta es {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets'))" />
<Error Condition="!Exists('..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets'))" />
<Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets'))" />
</Target>
<Import Project="..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets" Condition="Exists('..\..\packages\StyleCop.MSBuild.5.0.0-alpha01\build\StyleCop.MSBuild.targets')" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
</Project>

Просмотреть файл

@ -10,7 +10,7 @@
<package id="StyleCop.MSBuild" version="5.0.0-alpha01" targetFramework="xamarinios10" developmentDependency="true" />
<package id="Unity" version="4.0.1" targetFramework="xamarinios10" />
<package id="Xamarin.Forms" version="2.3.2.127" targetFramework="xamarinios10" />
<package id="Xamarin.Forms.Pages" version="2.3.0.38-pre2" targetFramework="xamarinios10" />
<package id="Xamarin.Forms.Pages" version="2.3.2.118-pre1" targetFramework="xamarinios10" />
<package id="Xamarin.Forms.Theme.Base" version="1.0.0.43-pre1" targetFramework="xamarinios10" />
<package id="Xamarin.Forms.Theme.Light" version="1.0.0.43-pre1" targetFramework="xamarinios10" />
</packages>