Beruflich Dokumente
Kultur Dokumente
A B O U T T HE A U T H O R
OCTOBER 11, 2 0 1 8
15 min read
That can quickly turn into a pain. With Xamarin.Forms, however, the UI
and app logic for your app resides in a single codebase andyou get to use
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 1/40
2018-10-17 Saving Grandma's Recipes With Xamarin.Forms — Smashing Magazine
We all have family recipes like that, and instead of possibly forgetting them,
in this article w e’
re going to create a mobile app for iOS and Android using
Xamarin.Forms https://msou.co/bms)that will save them for myself and
future generations of my family!
So if you’
re interested in writing mobile applications, but don’
t have the
time to write the same app over and over again for each platform, this article
is for you! Don’
t worry if you don’
t know C# from a Strawberry Pretzel
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 2/40
2018-10-17 Saving Grandma's Recipes With Xamarin.Forms — Smashing Magazine
Salad; I’
ve been writing Xamarin apps for over 8 years, and this article is a
tour through Xamarin.Forms that intends to give you enough information
to start learning on your own.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 3/40
2018-10-17 Saving Grandma's Recipes With Xamarin.Forms — Smashing Magazine
that result, however, are exactly the same. They look, feel, and behave just
like native apps written in Objective-C, Swift, or Java.
It’
s this code sharing where tremendous time savings can be realized.
And like the delicious buns my grandma bakes, once given the taste of
sharing code — it’
s hard not to crave more — and that’
s where
Xamarin.Forms comes in.
Xamarin.Forms
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 4/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
Instead of developing the user interface for iOS and Android separately,
Xamarin.Forms introduces a UI toolkit that enables you to write native
mobile apps from a single code base.
Think of it this way: You have an app that needs a button. Each platform has
the concept of a button. Why should you have to write the user interface a
bunch of different times when you know all the user of your app needs to
do is tap a button?
That’
s one of the problems Xamarin.Forms solves.
The code sharing stats for apps developed with Xamarin.Forms can be off
the charts. A conference organizing app has 93% of its code shared on iOS
and 91% on Android. The app is open sourced. Take a peek at the code (V+
https://msou.co/bmp).
But today, w e’
re going to focus on the UI capabilities for building our recipe
manager app.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 5/40
2018-10-17 Saving Grandma's Recipes With Xamarin.l omi< — Smashing Magazine
The App W e’
ll Build
The recipe manager app will have a straightforward user interface. We will
be working in the kitchen, so it needs to be easy to use!
It will consist o f 3 screens. The first will show a list of all the recipes
currently loaded in the app.
4:20 «55»
Recipes Add
Buns
Coleslaw
Baked Beans
Homemade Brats
Gumbo
Rhubarb Pie
Cherry Bounce
Ranch Chicken
https://www.smashingmagazine.com/20i8/10/android-ios-mobiie-apps-xamarin-forms/ 6/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
4:03
Buns
Ingredients
Directions
From there you can tap an edit button to make changes to the recipe on the
third screen:
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 7/40
2018-10-17 Saving Grandma's Recipes With Xamarin.Forms — Smashing Magazine
4:03
^ Buns Buns
GENERAL
Name Buns
INGREDIENTS
DIRECTIONS
You can also get to this screen by tapping the add button from the recipe list
screen.
Xamarin apps are built with C# and .NET, using Visual Studio on Windows
or Visual Studio for Mac on the Mac, but you need to have the iOS (G
https://msou.co/bm8) or Android (G https://msou.co/bna) SDKs and tooling
installed, too. Getting everything installed, in the correct order could be a bit
of an issue, however, the Visual Studio installers will take care of note only
getting the IDE installed, but also the platform tooling.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 8/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
Although a Mac is always required to build iOS apps, with Xamarin you can
still develop and debug those apps from Visual Studio on Windows
https://msou.co/bmg)!So if W indows is your jam, there’
s no need to change
your environments altogether.
Now let’
s see how Xamarin.Forms can help us save some family recipes
from one code base!
Let’
s start with talking about how w e’
re going to layout the UI for our recipe
saving app!
The Page
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 9/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
In other words, the code to navigate between screens has been abstracted
too!
Finally, although not the only way to do it, I code the UI of my P age’
s in
XAML (V+https://msou.co/bnd). (The other way would be to use C#.) XAML is a
markup language that describes how a page looks. And for now, suffice it to
say, it’
s kinda sorta similar to HTML.
The Layout
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 10/40
2018-10-17 Saving Grandma's Recipes With Xamarin.Forms — Smashing Magazine
V /£ R £ L -A rfO O T £ *2 -
/ \
-— >1
CD CD
/ *
\/
11/40
https://vnvw.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/
>018-10-17 Saving Grandma's R ecipes With Xamarin.Forms — Sm ashing M agazine
There are several different types of Layouts in Forms. Som e o f the m ost
com m on ones include Stack, Absolute, Relative, Grid, Scroll, and Flex
layouts.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 12/40
2018-JO-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
ODQ
Q
D
SCSCL^
The Controls
Then fin ally there are the controls https://msou.co/bnf). These are the
w id g e ts o f y ou r app that the u se r interacts with.
V /£ R t C o/v /T T O U S
\tj£ MAKE T^r/v/CrS
2_ TR^rry o^eroui
b o t t o m
\- - - - - - - - - - - - - - - - - - - V
T anao£
lL w s e u | \ _ j
\ \
Forms come with many controls that will be used no matter what type of
app you’
re building. Things like labels, buttons, entry boxes, images, and of
course, list views.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 14/40
2018-10-17 Saving Grandma's Recipes With Xamarin.Forms — Smashing Magazine
R e c ip e s
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 15/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
A B O U T T HE A U T H O R
OCTOBER 11, 2 0 1 8
15 min read
and maintain the user interface and app logic for both iOS and Android
That can quickly turn into a pain. With Xamarin.Forms, however, the UI
and app logic for your app resides in a single codebase andyou get to use
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 1/40
2018-10-17 Saving Grandma’
s R ecipes With Xamarin.Forms — Smashing Magazine
M y g r a n d m a m ak es t h e b e st, m o s t
fluffiest, go weak-in-your-knees buns that anybody
has ever tasted. The problem is, there’
s a ton of secret
ingredients (and I’
m not just talking love) that go
into those buns, and those ingredients and directions
are all stored in my grandm a’
s head.
We all have family recipes like that, and instead of possibly forgetting them,
in this article w e’
re going to create a mobile app for iOS and Android using
Xamarin.Forms https://msou.co/bms)that will save them for myself and
future generations of my family!
So if you’
re interested in writing mobile applications, but don’
t have the
time to write the same app over and over again for each platform, this article
is for you! Don’
t worry if you don’
t know C# from a Strawberry Pretzel
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 2/40
2018-10-17 Saving Grandma’
s R ecipes With Xamarin.Forms — Smashing Magazine
Salad; I’
ve been writing Xamarin apps for over 8 years, and this article is a
tour through Xamarin.Forms that intends to give you enough information
to start learning on your own.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 3/40
2018-10-17 Saving Grandma's Recipes With Xamarin.Forms — Smashing Magazine
that result, however, are exactly the same. They look, feel, and behave just
like native apps written in Objective-C, Swift, or Java.
It’
s this code sharing where tremendous time savings can be realized.
And like the delicious buns my grandma bakes, once given the taste of
sharing code — it’
s hard not to crave more — and that’
s where
Xamarin.Forms comes in.
Xamarin.Forms
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 4/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
Instead of developing the user interface for iOS and Android separately,
Xamarin.Forms introduces a UI toolkit that enables you to write native
mobile apps from a single code base.
Think of it this way: You have an app that needs a button. Each platform has
the concept of a button. Why should you have to write the user interface a
bunch of different times when you know all the user of your app needs to
do is tap a button?
That’
s one of the problems Xamarin.Forms solves.
The code sharing stats for apps developed with Xamarin.Forms can be off
the charts. A conference organizing app has 93% of its code shared on iOS
and 91% on Android. The app is open sourced. Take a peek at the code (V+
https://msou.co/bmp).
But today, w e’
re going to focus on the UI capabilities for building our recipe
manager app.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 5/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
The App W e’
ll Build
The recipe manager app will have a straightforward user interface. We will
be working in the kitchen, so it needs to be easy to use!
It w ill consist o f 3 screens. The first will show a list of all the recipes
currently loaded in the app.
<55* f_ , ,
4:20
Recipes Add
Buns
Coleslaw
Baked Beans
Homemade Brats
Gumbo
Rhubarb Pie
Cherry Bounce
Ranch Chicken
4:03
Buns
Ingredients
Directions
From there you can tap an edit button to make changes to the recipe on the
third screen:
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 7/40
2018-10-17 Saving Grandma's R ecipes With Xamarin.Forms — Smashing Magazine
4:03
GENERAL
Name Buns
INGREDIENTS
DIRECTIONS
You can also get to this screen by tapping the add button from the recipe list
screen.
Xamarin apps are built with C# and .NET, using Visual Studio on Windows
or Visual Studio for Mac on the Mac, but you need to have the iOS (W
https://msou.co/bm8) or Android https://msou.co/bna) SDKs and tooling
installed, too. Getting everything installed, in the correct order could be a bit
of an issue, however, the Visual Studio installers will take care of note only
getting the IDE installed, but also the platform tooling.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
Although a Mac is always required to build iOS apps, with Xamarin you can
still develop and debug those apps from Visual Studio on Windows
https://msou.co/bm9)•So if W indows is your jam, there’
s no need to change
your environments altogether.
Now let’
s see how Xamarin.Forms can help us save some family recipes
from one code base!
Let’
s start with talking about how w e’
re going to layout the UI for our recipe
saving app!
The Page
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 9/40
2018-10-17 Saving Grandma’
s R ecipes With Xamarin.Forms — Smashing Magazine
In other words, the code to navigate between screens has been abstracted
too!
Finally, although not the only way to do it, I code the UI of my P age’
s in
XAML (Whttps://msou.co/bnd). (The other way would be to use C#.) XAML is a
markup language that describes how a page looks. And for now, suffice it to
say, it’
s kinda sorta similar to HTML.
The Layout
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 10/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
All the controls on a page are arranged by something called a Layout (h>
https://msou.co/bne).
v Je k e L a y o u ts
CD
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 11/40
1018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 12/40
2018 - 10-17 Saving Grandma s Recipes With Xamarin.Porms — Smashing Magazine
'REu c ttn e
The Controls
Then finally there are the controls (>->https://msou.co/bnf). These are the
widgets o f your app that the user interacts with.
Forms com e with many controls that will be used no matter what type of
app you ’
re building. Things like labels, buttons, entry boxes, images, and of
course, list views.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 15/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
D O l + J 0 4:35
4:20
Buns Buns
Coleslaw Coleslaw
Baked Beans
Baked Beans
Ranch Chicken
Cherry Bounce
& Recipe lists on iOS (left) and Android (right) (Large preview)
There’
s a couple of important things going on here.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 16/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
Then there’
s a little bit of boilerplate ceremony to the Li stView before we
get to what w e’
re after: the <T extC ell>.This is telling Forms to display
simple text in each cell of the list.
There’
s a function that can be overridden in every Page called OnAppeari ng
—which as I’
m sure you guessed — gets called when the Page appears.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 17/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
Event Handling
Without responding to user touches our app is nothing more than a list of
delicious sounding recipes. They sound good, but without knowing how to
cook them, it’
s not of much use!
Let’
s make each cell in the ListView respond to taps so we can see how to
make the recipe!
In the Reci peLi stPage code-behind file, we can add event handlers to
controls to listen and react to user interaction events.
There’
s some neat stuff going on there.
Of the arguments that get passed into the handler, the eventArgs object
has a Selectedltem property that happens to be whatever is bound to the
ListView from before.
Of course, there’
s a page that shows us the secret ingredients and directions
of how to make each recipe, but how does that page get displayed?
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 18/40
2018-10-17 Saving Grandma’
s R ecipes With Xamarin.Forms — Smashing Magazine
Now le t’
s take a peek at the recipe details page:
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 19/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
I
0 , i Q 4:35
4:03
Buns
Ingredients
Buns
Love and som e s e c re t s tu ff
Directions Ingredients
Directions
Surely I'm not going to give away family secrets in this article!!
O Recipe detail screens on iOS (left) and Android (right) (Large preview)
This page is built with XAML as well. However, the Layout used
(FlexLayout (Whttps://msou.co/bng)) is quite cool as it’
s inspired by the CSS
Flexbox.
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 20/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
<ContentPage.Content> < S cro llV ie w > <FlexLayout A lig n Ite m s = " S ta rtM
A lig n C o n te n t= MS t a r t M Wrap=MWrap"> <Image Source=Mbuns.pngM
F le x L a y o u t.Basis="100%" /> <Label T e x t= "{B in d in g Name}"
H o riz o n ta lT e x tA lig n m e n t= "C e n te r" TextColor="#01487E"
F o n tA ttrib u te s = "B o ld " FontS ize=” Large” M argin=” 10, 10” />
<BoxView F le x L a y o u t. Basis="100%" H eightR equest="0” /> <Label
T e x t= "In g re d ie n ts " F o n tA ttrib u te s = "B o ld " FontSize="Medium"
TextColor="#EE3F60" M a rg in = "1 0 ,10"
H o riz o n ta lO p tio n s = "F illA n d E x p a n d " /> <BoxView
F le x L a y o u t.Basis="100%" H eightR equest="0" /> <Label T e xt= "
{B in d in g In g r e d ie n ts } " M a rg in = "1 0 ,10" F ontS ize= "S m all" />
<BoxView F le x L a y o u t. Basis="100%" H eightRequest=” 0 ” /> <Label
T e x t= "D ir e c tio n s " F o n tA ttrib u te s = "B o ld " FontSize="Medium"
TextColor="#EE3F60" M a rg in = "1 0 ,10"
H o riz o n ta lO p tio n s = "F illA n d E x p a n d " /> <BoxView
F le x L a y o u t.Basis="100%" HeightR equest=” 0 ” /> <Label T ext="
{B in d in g D ir e c tio n s } " M a rg in = "1 0 ,10" FontS ize= "S m all" />
< /F lexL ayou t> < /S c ro llV ie w > </C ontentP age.C ontent>
The FlexLayout will arrange its controls in either rows or columns. The big
benefit comes though with the fact that it can automatically detect how
much room there is left on the screen to place a control, and if there’
s not
enough, then it can automatically create a new row or column to
accommodate it!
This helps greatly when dealing with various screen sizes, which there are
plenty of in mobile development.
Well, with the FlexLayout helping us keep the details screen looking good,
we still need to edit those recipes, right?
Which in this case, would be instantiating the Recipe Edit Page, and
pushing that onto our navigation stack using the Navigation object
mentioned previously.
A page with a list of recipes: check! A page with all the details to make the
recipes: check! All th at’
s now left is to create the page that we use to enter or
change a recipe while we watch grandma work her magic!
D O I Q 4:35
4:03
General
GENERAL
Name Buns
Name B uns
INGREDIENTS
Ingredients
DIRECTIONS
Directions
Surely I'm not going to give away family
secrets in this article!!
S urely I'm n o t g oin g to g ive a w a y fa m ily
s e c re ts in th is a rtic le !!
SAVE CANCEL
◄ 4» ■
£1 Recipe edit screens on iOS (left) and Android (right) (Large preview)
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
<ContentPage.Content> <Grid> < G rid . R o w D e fin itio n s> < R o v\t)e fin itio n
H e ig h t= "*M /> < R o w D e fin itio n H e ig h t= "A u to M />
< /G rid .R o w D e fin itio n s > < G rid . C o lu m n D e fin itio n s> < C o lu m n D e fin itio n
W id th = "*M /> < C o lu m n D e fin itio n W id th = "*" />
< /G rid .C o lu m n D e fin itio n s > cTableView Grid.Row="0" G rid.C olum n="0"
G rid . ColumnSpan=M2" In te n t= "F o rm M HasUnevenRows=Mtr u e M>
<TableS ection T itle = "G e n e ra l"> < E n try C e ll x:Name=MrecipeNam eCell"
Label=,,Name" /> < /T a b le S e ctio n > <TableS ection
T itle = " In g r e d ie n ts " > <View C ell> <StackLayout Padding="15">
< E d ito r x :N a m e = "in g re d ie n ts C e ll" /> </S tackLayout> < /V ie w C e ll>
< /T a b le S e ctio n > <TableS ection T i t l e = MD ir e c tio n s M> <ViewCell>
<StackLayout Padding=M15M> < E d ito r x : Name="dir e c tio n s C e ll" />
</S tackLayout> < /V ie w C e ll> < /T ab leS ection > </TableView> <Button
Text="SaveM G rid .R o w = "l" G rid.Colum n=M0M
BackgroundColor=M#EE3F60M T e x tC o lo r= MW hiteM x:Name=MsaveB utton"
/> <Button T e x t= T,CancelM Grid.Row=Ml M Grid.Colum n=Ml M
BackgroundColor="#4CC7F2" T e x tC o lo r= MW hiteM x:Name=Mc a n c e lB u tto n "
/> < /G rid > </C ontentP age.C ontent>
There’
s a little more code here, and that’
s because I’
m using the Grid layout
to specify how everything should lay out in a 2-Dimensional pattern.
And also notice no data binding here. Because I wanted to give an example
of how one would populate the controls purely from the code behind file:
I say they’
re .NET-ified because the syntax to handle that event is not native
to Java nor Objective-C. When the app runs on Android or iOS, the behavior
will be exactly like an Android Click or an iOS TouchUpInside.
And as you can see, each of those click event handlers are invoking
appropriate functions that either save the recipe and dismiss the page, or
only dismiss the page.
There it is — we have the UI down to save the recipes from now until the
end of time!
Saving the best for last: Xamarin.Forms 3.0 gives us — among other things
— the ability to style controls using CSS (>-»https://msou.co/bnh)!
So let’
s take the Recipe Details page and refactor it, so it uses Cascading
Style Sheets to set the visual elements instead of setting everything directly
inline in the XAML.
First step is to create the CSS doc! In this case it will look like the following:
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 24/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
For the most part, it looks like CSS. There are classes in there. There is a
single selector for a class type, Image .And then a bunch of property setters.
H ere’
s what it looked like before (W
https://gistgithub.com/codemillmatt/2387b7ue2c8d42680f1ae641c2gdg2b).
https://www.smashingmagazine.com/20i8/10/android-ios-mobiie-apps-xamarin-forms/ 25/40
2018-10-17 Saving Grandma's R ecipes With Xamarin.Forms — Smashing Magazine
It definitely cleans up the XAML, and it makes the intention of the control
clearer too. For example, now it’
s pretty obvious what those
<BoxView StyleClass="spacer" /> are up to!
Summary
Three screens, two platforms, one article, and endless recipes saved! And
you know what else? You can build apps with Xamarin.Forms for more than
Android and iOS. You can build UWP, macOS, and even Samsung Tizen
platforms!
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 26/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
Xamarin.Forms also gives you all the same code benefits that traditional
Xamarin development does. Any application logic is shared across all the
platforms. And you get to develop all your apps with a single IDE using a
single language — that’
s pretty cool!
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 27/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 28/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 29/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 30/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 31/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 32/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 33/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 34/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 35/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 36/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 37/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 38/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 39/40
2018-10-17 Saving Grandma’
s Recipes With Xamarin.Forms — Smashing Magazine
https://www.smashingmagazine.com/2018/10/android-ios-mobile-apps-xamarin-forms/ 40/40