0
00:00:00,0 --> 00:00:05,0
Downloaded from git.ir

1
00:00:01,080 --> 00:00:04,620

so what is a marine forms thyroid forms

2
00:00:04,620 --> 00:00:04,630
so what is a marine forms thyroid forms
 

3
00:00:04,630 --> 00:00:07,050
so what is a marine forms thyroid forms
is a library that enables you to build

4
00:00:07,050 --> 00:00:07,060
is a library that enables you to build
 

5
00:00:07,060 --> 00:00:10,170
is a library that enables you to build
native apps for iOS Android and Windows

6
00:00:10,170 --> 00:00:10,180
native apps for iOS Android and Windows
 

7
00:00:10,180 --> 00:00:14,220
native apps for iOS Android and Windows
using a single c-sharp codebase if you

8
00:00:14,220 --> 00:00:14,230
using a single c-sharp codebase if you
 

9
00:00:14,230 --> 00:00:15,480
using a single c-sharp codebase if you
have any experience with Windows

10
00:00:15,480 --> 00:00:15,490
have any experience with Windows
 

11
00:00:15,490 --> 00:00:17,550
have any experience with Windows
presentation foundation or Silverlight

12
00:00:17,550 --> 00:00:17,560
presentation foundation or Silverlight
 

13
00:00:17,560 --> 00:00:19,740
presentation foundation or Silverlight
xamarin forms will be very familiar to

14
00:00:19,740 --> 00:00:19,750
xamarin forms will be very familiar to
 

15
00:00:19,750 --> 00:00:22,259
xamarin forms will be very familiar to
you so we have this xml-based language

16
00:00:22,259 --> 00:00:22,269
you so we have this xml-based language
 

17
00:00:22,269 --> 00:00:25,909
you so we have this xml-based language
called sam'l which stands for extensible

18
00:00:25,909 --> 00:00:25,919
called sam'l which stands for extensible
 

19
00:00:25,919 --> 00:00:28,739
called sam'l which stands for extensible
application markup language and we use

20
00:00:28,739 --> 00:00:28,749
application markup language and we use
 

21
00:00:28,749 --> 00:00:30,779
application markup language and we use
this to define the user interface of our

22
00:00:30,779 --> 00:00:30,789
this to define the user interface of our
 

23
00:00:30,789 --> 00:00:33,540
this to define the user interface of our
applications for example we can define

24
00:00:33,540 --> 00:00:33,550
applications for example we can define
 

25
00:00:33,550 --> 00:00:35,549
applications for example we can define
what elements we have on a page

26
00:00:35,549 --> 00:00:35,559
what elements we have on a page
 

27
00:00:35,559 --> 00:00:38,100
what elements we have on a page
where they are located and what do they

28
00:00:38,100 --> 00:00:38,110
where they are located and what do they
 

29
00:00:38,110 --> 00:00:38,869
where they are located and what do they
look like

30
00:00:38,869 --> 00:00:38,879
look like
 

31
00:00:38,879 --> 00:00:41,670
look like
behind every sam'l file we have what we

32
00:00:41,670 --> 00:00:41,680
behind every sam'l file we have what we
 

33
00:00:41,680 --> 00:00:44,069
behind every sam'l file we have what we
call a code behind which is basically a

34
00:00:44,069 --> 00:00:44,079
call a code behind which is basically a
 

35
00:00:44,079 --> 00:00:46,830
call a code behind which is basically a
class that implements the behavior for

36
00:00:46,830 --> 00:00:46,840
class that implements the behavior for
 

37
00:00:46,840 --> 00:00:49,470
class that implements the behavior for
that page for example what should happen

38
00:00:49,470 --> 00:00:49,480
that page for example what should happen
 

39
00:00:49,480 --> 00:00:52,169
that page for example what should happen
when we click a button or select an item

40
00:00:52,169 --> 00:00:52,179
when we click a button or select an item
 

41
00:00:52,179 --> 00:00:54,540
when we click a button or select an item
from a list so these are the

42
00:00:54,540 --> 00:00:54,550
from a list so these are the
 

43
00:00:54,550 --> 00:00:57,479
from a list so these are the
responsibilities of the code behind now

44
00:00:57,479 --> 00:00:57,489
responsibilities of the code behind now
 

45
00:00:57,489 --> 00:00:59,970
responsibilities of the code behind now
in terms of architecture xamarin forms

46
00:00:59,970 --> 00:00:59,980
in terms of architecture xamarin forms
 

47
00:00:59,980 --> 00:01:02,130
in terms of architecture xamarin forms
is built on top of two existing

48
00:01:02,130 --> 00:01:02,140
is built on top of two existing
 

49
00:01:02,140 --> 00:01:04,470
is built on top of two existing
libraries Sam rendered Android and

50
00:01:04,470 --> 00:01:04,480
libraries Sam rendered Android and
 

51
00:01:04,480 --> 00:01:07,920
libraries Sam rendered Android and
xamarin iOS so with some reforms we

52
00:01:07,920 --> 00:01:07,930
xamarin iOS so with some reforms we
 

53
00:01:07,930 --> 00:01:10,800
xamarin iOS so with some reforms we
worked with a single unified API for

54
00:01:10,800 --> 00:01:10,810
worked with a single unified API for
 

55
00:01:10,810 --> 00:01:13,380
worked with a single unified API for
creating user interfaces and xamarin

56
00:01:13,380 --> 00:01:13,390
creating user interfaces and xamarin
 

57
00:01:13,390 --> 00:01:15,570
creating user interfaces and xamarin
forms will internally map these user

58
00:01:15,570 --> 00:01:15,580
forms will internally map these user
 

59
00:01:15,580 --> 00:01:16,980
forms will internally map these user
interface elements to their

60
00:01:16,980 --> 00:01:16,990
interface elements to their
 

61
00:01:16,990 --> 00:01:20,190
interface elements to their
corresponding native equivalent and this

62
00:01:20,190 --> 00:01:20,200
corresponding native equivalent and this
 

63
00:01:20,200 --> 00:01:22,260
corresponding native equivalent and this
makes our applications completely native

64
00:01:22,260 --> 00:01:22,270
makes our applications completely native
 

65
00:01:22,270 --> 00:01:24,750
makes our applications completely native
so we don't have user interface elements

66
00:01:24,750 --> 00:01:24,760
so we don't have user interface elements
 

67
00:01:24,760 --> 00:01:27,060
so we don't have user interface elements
that look the same across different

68
00:01:27,060 --> 00:01:27,070
that look the same across different
 

69
00:01:27,070 --> 00:01:29,310
that look the same across different
platforms if you use a button that

70
00:01:29,310 --> 00:01:29,320
platforms if you use a button that
 

71
00:01:29,320 --> 00:01:31,830
platforms if you use a button that
button looks different depending on

72
00:01:31,830 --> 00:01:31,840
button looks different depending on
 

73
00:01:31,840 --> 00:01:34,470
button looks different depending on
where you run your application also

74
00:01:34,470 --> 00:01:34,480
where you run your application also
 

75
00:01:34,480 --> 00:01:36,750
where you run your application also
because zaman forms is built on top of

76
00:01:36,750 --> 00:01:36,760
because zaman forms is built on top of
 

77
00:01:36,760 --> 00:01:38,670
because zaman forms is built on top of
some rendered android and hammering that

78
00:01:38,670 --> 00:01:38,680
some rendered android and hammering that
 

79
00:01:38,680 --> 00:01:41,550
some rendered android and hammering that
iOS you can write platform specific code

80
00:01:41,550 --> 00:01:41,560
iOS you can write platform specific code
 

81
00:01:41,560 --> 00:01:44,430
iOS you can write platform specific code
that uses the API exposed by any of

82
00:01:44,430 --> 00:01:44,440
that uses the API exposed by any of
 

83
00:01:44,440 --> 00:01:46,770
that uses the API exposed by any of
these libraries so you're not limited to

84
00:01:46,770 --> 00:01:46,780
these libraries so you're not limited to
 

85
00:01:46,780 --> 00:01:48,600
these libraries so you're not limited to
a common set of features that are

86
00:01:48,600 --> 00:01:48,610
a common set of features that are
 

87
00:01:48,610 --> 00:01:51,990
a common set of features that are
available across all these platforms now

88
00:01:51,990 --> 00:01:52,000
available across all these platforms now
 

89
00:01:52,000 --> 00:01:53,160
available across all these platforms now
the first question that a lot of

90
00:01:53,160 --> 00:01:53,170
the first question that a lot of
 

91
00:01:53,170 --> 00:01:55,800
the first question that a lot of
beginners ask me is maash do I need to

92
00:01:55,800 --> 00:01:55,810
beginners ask me is maash do I need to
 

93
00:01:55,810 --> 00:01:57,450
beginners ask me is maash do I need to
know about examined on android or

94
00:01:57,450 --> 00:01:57,460
know about examined on android or
 

95
00:01:57,460 --> 00:01:59,790
know about examined on android or
examined iOS in order to learn xamarin

96
00:01:59,790 --> 00:01:59,800
examined iOS in order to learn xamarin
 

97
00:01:59,800 --> 00:02:01,650
examined iOS in order to learn xamarin
forms none at all

98
00:02:01,650 --> 00:02:01,660
forms none at all
 

99
00:02:01,660 --> 00:02:03,450
forms none at all
the only exception is if you want to

100
00:02:03,450 --> 00:02:03,460
the only exception is if you want to
 

101
00:02:03,460 --> 00:02:05,640
the only exception is if you want to
write something specific for Android or

102
00:02:05,640 --> 00:02:05,650
write something specific for Android or
 

103
00:02:05,650 --> 00:02:08,550
write something specific for Android or
iOS otherwise for the most part you can

104
00:02:08,550 --> 00:02:08,560
iOS otherwise for the most part you can
 

105
00:02:08,560 --> 00:02:11,380
iOS otherwise for the most part you can
learn xamarin forms on its own

106
00:02:11,380 --> 00:02:11,390
learn xamarin forms on its own
 

107
00:02:11,390 --> 00:02:13,240
learn xamarin forms on its own
the second beginners question is how do

108
00:02:13,240 --> 00:02:13,250
the second beginners question is how do
 

109
00:02:13,250 --> 00:02:14,980
the second beginners question is how do
I know which xamarin products should I

110
00:02:14,980 --> 00:02:14,990
I know which xamarin products should I
 

111
00:02:14,990 --> 00:02:17,560
I know which xamarin products should I
use should I use them in forms or one of

112
00:02:17,560 --> 00:02:17,570
use should I use them in forms or one of
 

113
00:02:17,570 --> 00:02:20,140
use should I use them in forms or one of
the more specific libraries the answer

114
00:02:20,140 --> 00:02:20,150
the more specific libraries the answer
 

115
00:02:20,150 --> 00:02:22,870
the more specific libraries the answer
is it depends what makes a marine forms

116
00:02:22,870 --> 00:02:22,880
is it depends what makes a marine forms
 

117
00:02:22,880 --> 00:02:25,990
is it depends what makes a marine forms
powerful is the ability to share most if

118
00:02:25,990 --> 00:02:26,000
powerful is the ability to share most if
 

119
00:02:26,000 --> 00:02:28,450
powerful is the ability to share most if
not all your code across these platforms

120
00:02:28,450 --> 00:02:28,460
not all your code across these platforms
 

121
00:02:28,460 --> 00:02:30,910
not all your code across these platforms
so you code the application once and

122
00:02:30,910 --> 00:02:30,920
so you code the application once and
 

123
00:02:30,920 --> 00:02:33,120
so you code the application once and
then build it for different platforms

124
00:02:33,120 --> 00:02:33,130
then build it for different platforms
 

125
00:02:33,130 --> 00:02:35,680
then build it for different platforms
this building is nothing more than just

126
00:02:35,680 --> 00:02:35,690
this building is nothing more than just
 

127
00:02:35,690 --> 00:02:38,440
this building is nothing more than just
a compile in Visual Studio that's all

128
00:02:38,440 --> 00:02:38,450
a compile in Visual Studio that's all
 

129
00:02:38,450 --> 00:02:40,630
a compile in Visual Studio that's all
you have to do so if you don't need to

130
00:02:40,630 --> 00:02:40,640
you have to do so if you don't need to
 

131
00:02:40,640 --> 00:02:42,550
you have to do so if you don't need to
use much of the platform specific

132
00:02:42,550 --> 00:02:42,560
use much of the platform specific
 

133
00:02:42,560 --> 00:02:44,980
use much of the platform specific
functionality and code reuse is more

134
00:02:44,980 --> 00:02:44,990
functionality and code reuse is more
 

135
00:02:44,990 --> 00:02:47,050
functionality and code reuse is more
important to you then go for examine

136
00:02:47,050 --> 00:02:47,060
important to you then go for examine
 

137
00:02:47,060 --> 00:02:49,780
important to you then go for examine
forms otherwise if you're going to do a

138
00:02:49,780 --> 00:02:49,790
forms otherwise if you're going to do a
 

139
00:02:49,790 --> 00:02:52,180
forms otherwise if you're going to do a
lot of customization and have quite a

140
00:02:52,180 --> 00:02:52,190
lot of customization and have quite a
 

141
00:02:52,190 --> 00:02:54,310
lot of customization and have quite a
few use cases for working with platform

142
00:02:54,310 --> 00:02:54,320
few use cases for working with platform
 

143
00:02:54,320 --> 00:02:56,560
few use cases for working with platform
specific API then it's better to use

144
00:02:56,560 --> 00:02:56,570
specific API then it's better to use
 

145
00:02:56,570 --> 00:02:59,580
specific API then it's better to use
surrender the Android or examined on iOS

146
00:02:59,580 --> 00:02:59,590
surrender the Android or examined on iOS
 

147
00:02:59,590 --> 00:03:02,199
surrender the Android or examined on iOS
in terms of tooling you have a few

148
00:03:02,199 --> 00:03:02,209
in terms of tooling you have a few
 

149
00:03:02,209 --> 00:03:04,270
in terms of tooling you have a few
options here if you have a Windows

150
00:03:04,270 --> 00:03:04,280
options here if you have a Windows
 

151
00:03:04,280 --> 00:03:06,820
options here if you have a Windows
machine you can build and deploy apps to

152
00:03:06,820 --> 00:03:06,830
machine you can build and deploy apps to
 

153
00:03:06,830 --> 00:03:10,270
machine you can build and deploy apps to
Android and Windows but not I Oh s for

154
00:03:10,270 --> 00:03:10,280
Android and Windows but not I Oh s for
 

155
00:03:10,280 --> 00:03:12,580
Android and Windows but not I Oh s for
that you need a Mac either a MacBook Pro

156
00:03:12,580 --> 00:03:12,590
that you need a Mac either a MacBook Pro
 

157
00:03:12,590 --> 00:03:16,270
that you need a Mac either a MacBook Pro
or an iMac on the other side if you're a

158
00:03:16,270 --> 00:03:16,280
or an iMac on the other side if you're a
 

159
00:03:16,280 --> 00:03:18,729
or an iMac on the other side if you're a
Mac user you can build apps for Android

160
00:03:18,729 --> 00:03:18,739
Mac user you can build apps for Android
 

161
00:03:18,739 --> 00:03:21,970
Mac user you can build apps for Android
and iOS but not for Windows so if you

162
00:03:21,970 --> 00:03:21,980
and iOS but not for Windows so if you
 

163
00:03:21,980 --> 00:03:24,130
and iOS but not for Windows so if you
want to target all platforms you need

164
00:03:24,130 --> 00:03:24,140
want to target all platforms you need
 

165
00:03:24,140 --> 00:03:26,860
want to target all platforms you need
both a Windows and a Mac machine but

166
00:03:26,860 --> 00:03:26,870
both a Windows and a Mac machine but
 

167
00:03:26,870 --> 00:03:28,930
both a Windows and a Mac machine but
this is not a requirement to take this

168
00:03:28,930 --> 00:03:28,940
this is not a requirement to take this
 

169
00:03:28,940 --> 00:03:30,789
this is not a requirement to take this
course or to learn zarion forms in

170
00:03:30,789 --> 00:03:30,799
course or to learn zarion forms in
 

171
00:03:30,799 --> 00:03:33,280
course or to learn zarion forms in
general it's all about where you want to

172
00:03:33,280 --> 00:03:33,290
general it's all about where you want to
 

173
00:03:33,290 --> 00:03:35,680
general it's all about where you want to
deploy your application you can start

174
00:03:35,680 --> 00:03:35,690
deploy your application you can start
 

175
00:03:35,690 --> 00:03:37,360
deploy your application you can start
with a Windows machine and use Visual

176
00:03:37,360 --> 00:03:37,370
with a Windows machine and use Visual
 

177
00:03:37,370 --> 00:03:39,460
with a Windows machine and use Visual
Studio to build apps for Android and

178
00:03:39,460 --> 00:03:39,470
Studio to build apps for Android and
 

179
00:03:39,470 --> 00:03:41,740
Studio to build apps for Android and
Windows if in the future you want to

180
00:03:41,740 --> 00:03:41,750
Windows if in the future you want to
 

181
00:03:41,750 --> 00:03:44,080
Windows if in the future you want to
build your app for iOS you just add a

182
00:03:44,080 --> 00:03:44,090
build your app for iOS you just add a
 

183
00:03:44,090 --> 00:03:45,910
build your app for iOS you just add a
Mac to your setup and you're pretty much

184
00:03:45,910 --> 00:03:45,920
Mac to your setup and you're pretty much
 

185
00:03:45,920 --> 00:03:48,100
Mac to your setup and you're pretty much
done you don't need to write any new

186
00:03:48,100 --> 00:03:48,110
done you don't need to write any new
 

187
00:03:48,110 --> 00:03:50,789
done you don't need to write any new
code you just build your project for iOS

188
00:03:50,789 --> 00:03:50,799
code you just build your project for iOS
 

189
00:03:50,799 --> 00:03:52,960
code you just build your project for iOS
alright next I'm going to show you how

190
00:03:52,960 --> 00:03:52,970
alright next I'm going to show you how
 

191
00:03:52,970 --> 00:03:57,030
alright next I'm going to show you how
to set up your development environment

192
00:03:57,030 --> 00:03:57,040

 

193
00:03:57,040 --> 00:03:59,429

in this video I'm going to show you how

194
00:03:59,429 --> 00:03:59,439
in this video I'm going to show you how
 

195
00:03:59,439 --> 00:04:01,890
in this video I'm going to show you how
to set up xamarin on a Windows and a Mac

196
00:04:01,890 --> 00:04:01,900
to set up xamarin on a Windows and a Mac
 

197
00:04:01,900 --> 00:04:03,660
to set up xamarin on a Windows and a Mac
machine I'm going to start off by

198
00:04:03,660 --> 00:04:03,670
machine I'm going to start off by
 

199
00:04:03,670 --> 00:04:06,000
machine I'm going to start off by
setting up on Windows and then I'll get

200
00:04:06,000 --> 00:04:06,010
setting up on Windows and then I'll get
 

201
00:04:06,010 --> 00:04:08,309
setting up on Windows and then I'll get
to Mac whether you're a Windows or a Mac

202
00:04:08,309 --> 00:04:08,319
to Mac whether you're a Windows or a Mac
 

203
00:04:08,319 --> 00:04:10,259
to Mac whether you're a Windows or a Mac
user be sure to watch this video

204
00:04:10,259 --> 00:04:10,269
user be sure to watch this video
 

205
00:04:10,269 --> 00:04:12,599
user be sure to watch this video
thoroughly so if you're a Windows user

206
00:04:12,599 --> 00:04:12,609
thoroughly so if you're a Windows user
 

207
00:04:12,609 --> 00:04:15,179
thoroughly so if you're a Windows user
you probably have Visual Studio so we

208
00:04:15,179 --> 00:04:15,189
you probably have Visual Studio so we
 

209
00:04:15,189 --> 00:04:17,039
you probably have Visual Studio so we
can install xamarin and that will

210
00:04:17,039 --> 00:04:17,049
can install xamarin and that will
 

211
00:04:17,049 --> 00:04:20,039
can install xamarin and that will
install all the required SDKs as well as

212
00:04:20,039 --> 00:04:20,049
install all the required SDKs as well as
 

213
00:04:20,049 --> 00:04:22,700
install all the required SDKs as well as
project templates in Visual Studio so

214
00:04:22,700 --> 00:04:22,710
project templates in Visual Studio so
 

215
00:04:22,710 --> 00:04:25,469
project templates in Visual Studio so
simply head over to xamarin comm slash

216
00:04:25,469 --> 00:04:25,479
simply head over to xamarin comm slash
 

217
00:04:25,479 --> 00:04:29,100
simply head over to xamarin comm slash
download fill out this form and be sure

218
00:04:29,100 --> 00:04:29,110
download fill out this form and be sure
 

219
00:04:29,110 --> 00:04:31,650
download fill out this form and be sure
to set the answer of this question I

220
00:04:31,650 --> 00:04:31,660
to set the answer of this question I
 

221
00:04:31,660 --> 00:04:34,080
to set the answer of this question I
already have Visual Studio installed to

222
00:04:34,080 --> 00:04:34,090
already have Visual Studio installed to
 

223
00:04:34,090 --> 00:04:36,570
already have Visual Studio installed to
yes so you don't get Visual Studio you

224
00:04:36,570 --> 00:04:36,580
yes so you don't get Visual Studio you
 

225
00:04:36,580 --> 00:04:40,320
yes so you don't get Visual Studio you
only get xamarin installer once you run

226
00:04:40,320 --> 00:04:40,330
only get xamarin installer once you run
 

227
00:04:40,330 --> 00:04:41,999
only get xamarin installer once you run
it you're going to see a dialog box like

228
00:04:41,999 --> 00:04:42,009
it you're going to see a dialog box like
 

229
00:04:42,009 --> 00:04:45,089
it you're going to see a dialog box like
this be sure to select the following

230
00:04:45,089 --> 00:04:45,099
this be sure to select the following
 

231
00:04:45,099 --> 00:04:47,400
this be sure to select the following
items on the cross-platform mobile

232
00:04:47,400 --> 00:04:47,410
items on the cross-platform mobile
 

233
00:04:47,410 --> 00:04:50,310
items on the cross-platform mobile
development so the latest version of

234
00:04:50,310 --> 00:04:50,320
development so the latest version of
 

235
00:04:50,320 --> 00:04:53,640
development so the latest version of
c-sharp slash net xamarin so you see

236
00:04:53,640 --> 00:04:53,650
c-sharp slash net xamarin so you see
 

237
00:04:53,650 --> 00:04:56,400
c-sharp slash net xamarin so you see
I've currently installed version 4.0.3

238
00:04:56,400 --> 00:04:56,410
I've currently installed version 4.0.3
 

239
00:04:56,410 --> 00:04:58,290
I've currently installed version 4.0.3
but there is a newer version so I'm

240
00:04:58,290 --> 00:04:58,300
but there is a newer version so I'm
 

241
00:04:58,300 --> 00:05:02,010
but there is a newer version so I'm
going to take that

242
00:05:02,010 --> 00:05:02,020

 

243
00:05:02,020 --> 00:05:04,740

and then under common tools and software

244
00:05:04,740 --> 00:05:04,750
and then under common tools and software
 

245
00:05:04,750 --> 00:05:08,010
and then under common tools and software
development kits select Android native

246
00:05:08,010 --> 00:05:08,020
development kits select Android native
 

247
00:05:08,020 --> 00:05:10,350
development kits select Android native
development kit you see I have installed

248
00:05:10,350 --> 00:05:10,360
development kit you see I have installed
 

249
00:05:10,360 --> 00:05:14,219
development kit you see I have installed
both the 32-bit and 64-bit versions you

250
00:05:14,219 --> 00:05:14,229
both the 32-bit and 64-bit versions you
 

251
00:05:14,229 --> 00:05:16,760
both the 32-bit and 64-bit versions you
also need to install Android SDK and

252
00:05:16,760 --> 00:05:16,770
also need to install Android SDK and
 

253
00:05:16,770 --> 00:05:19,559
also need to install Android SDK and
then you need to install at least one of

254
00:05:19,559 --> 00:05:19,569
then you need to install at least one of
 

255
00:05:19,569 --> 00:05:22,409
then you need to install at least one of
Android SDK setups the difference

256
00:05:22,409 --> 00:05:22,419
Android SDK setups the difference
 

257
00:05:22,419 --> 00:05:23,909
Android SDK setups the difference
between these items are there version

258
00:05:23,909 --> 00:05:23,919
between these items are there version
 

259
00:05:23,919 --> 00:05:26,610
between these items are there version
number so we see the first item is API

260
00:05:26,610 --> 00:05:26,620
number so we see the first item is API
 

261
00:05:26,620 --> 00:05:30,089
number so we see the first item is API
level 19 and 21 and the last one is API

262
00:05:30,089 --> 00:05:30,099
level 19 and 21 and the last one is API
 

263
00:05:30,099 --> 00:05:32,730
level 19 and 21 and the last one is API
level 23 you can go for the last version

264
00:05:32,730 --> 00:05:32,740
level 23 you can go for the last version
 

265
00:05:32,740 --> 00:05:34,649
level 23 you can go for the last version
or if you have enough space on your

266
00:05:34,649 --> 00:05:34,659
or if you have enough space on your
 

267
00:05:34,659 --> 00:05:36,649
or if you have enough space on your
machine you can install all of them

268
00:05:36,649 --> 00:05:36,659
machine you can install all of them
 

269
00:05:36,659 --> 00:05:39,990
machine you can install all of them
apache ant is not really necessary but i

270
00:05:39,990 --> 00:05:40,000
apache ant is not really necessary but i
 

271
00:05:40,000 --> 00:05:43,140
apache ant is not really necessary but i
have installed it anyway and finally you

272
00:05:43,140 --> 00:05:43,150
have installed it anyway and finally you
 

273
00:05:43,150 --> 00:05:46,969
have installed it anyway and finally you
need to select java SE development kit

274
00:05:46,969 --> 00:05:46,979
need to select java SE development kit
 

275
00:05:46,979 --> 00:05:49,409
need to select java SE development kit
now if you have a typical machine and

276
00:05:49,409 --> 00:05:49,419
now if you have a typical machine and
 

277
00:05:49,419 --> 00:05:51,300
now if you have a typical machine and
are not part of a network with a proxy

278
00:05:51,300 --> 00:05:51,310
are not part of a network with a proxy
 

279
00:05:51,310 --> 00:05:53,790
are not part of a network with a proxy
server this installation process goes

280
00:05:53,790 --> 00:05:53,800
server this installation process goes
 

281
00:05:53,800 --> 00:05:56,909
server this installation process goes
very smoothly but it may fail if you're

282
00:05:56,909 --> 00:05:56,919
very smoothly but it may fail if you're
 

283
00:05:56,919 --> 00:05:58,950
very smoothly but it may fail if you're
behind a proxy server or if you're

284
00:05:58,950 --> 00:05:58,960
behind a proxy server or if you're
 

285
00:05:58,960 --> 00:06:00,839
behind a proxy server or if you're
running Windows in a virtual machine on

286
00:06:00,839 --> 00:06:00,849
running Windows in a virtual machine on
 

287
00:06:00,849 --> 00:06:03,149
running Windows in a virtual machine on
a Mac this happens mainly because

288
00:06:03,149 --> 00:06:03,159
a Mac this happens mainly because
 

289
00:06:03,159 --> 00:06:06,180
a Mac this happens mainly because
xamarin installer cannot download some

290
00:06:06,180 --> 00:06:06,190
xamarin installer cannot download some
 

291
00:06:06,190 --> 00:06:08,580
xamarin installer cannot download some
of the required resources so at this

292
00:06:08,580 --> 00:06:08,590
of the required resources so at this
 

293
00:06:08,590 --> 00:06:10,620
of the required resources so at this
point you need to manually install some

294
00:06:10,620 --> 00:06:10,630
point you need to manually install some
 

295
00:06:10,630 --> 00:06:13,110
point you need to manually install some
of these components I've attached a PDF

296
00:06:13,110 --> 00:06:13,120
of these components I've attached a PDF
 

297
00:06:13,120 --> 00:06:14,909
of these components I've attached a PDF
to this lecture with more details about

298
00:06:14,909 --> 00:06:14,919
to this lecture with more details about
 

299
00:06:14,919 --> 00:06:17,430
to this lecture with more details about
manual installation so hopefully you

300
00:06:17,430 --> 00:06:17,440
manual installation so hopefully you
 

301
00:06:17,440 --> 00:06:18,839
manual installation so hopefully you
won't have any problems during the

302
00:06:18,839 --> 00:06:18,849
won't have any problems during the
 

303
00:06:18,849 --> 00:06:20,939
won't have any problems during the
installation but if you encounter any

304
00:06:20,939 --> 00:06:20,949
installation but if you encounter any
 

305
00:06:20,949 --> 00:06:23,159
installation but if you encounter any
issues you really need to troubleshoot

306
00:06:23,159 --> 00:06:23,169
issues you really need to troubleshoot
 

307
00:06:23,169 --> 00:06:25,529
issues you really need to troubleshoot
them yourself because every machine is

308
00:06:25,529 --> 00:06:25,539
them yourself because every machine is
 

309
00:06:25,539 --> 00:06:26,999
them yourself because every machine is
different in terms of the hardware and

310
00:06:26,999 --> 00:06:27,009
different in terms of the hardware and
 

311
00:06:27,009 --> 00:06:29,519
different in terms of the hardware and
software and I really cannot help you

312
00:06:29,519 --> 00:06:29,529
software and I really cannot help you
 

313
00:06:29,529 --> 00:06:29,999
software and I really cannot help you
with that

314
00:06:29,999 --> 00:06:30,009
with that
 

315
00:06:30,009 --> 00:06:32,790
with that
so just google the exact error message

316
00:06:32,790 --> 00:06:32,800
so just google the exact error message
 

317
00:06:32,800 --> 00:06:34,559
so just google the exact error message
you get and you will definitely find a

318
00:06:34,559 --> 00:06:34,569
you get and you will definitely find a
 

319
00:06:34,569 --> 00:06:37,740
you get and you will definitely find a
solution I just want to emphasize do not

320
00:06:37,740 --> 00:06:37,750
solution I just want to emphasize do not
 

321
00:06:37,750 --> 00:06:39,749
solution I just want to emphasize do not
get discouraged if you get any errors

322
00:06:39,749 --> 00:06:39,759
get discouraged if you get any errors
 

323
00:06:39,759 --> 00:06:41,760
get discouraged if you get any errors
you only need to spend a bit of time to

324
00:06:41,760 --> 00:06:41,770
you only need to spend a bit of time to
 

325
00:06:41,770 --> 00:06:43,050
you only need to spend a bit of time to
travel through these issues and then

326
00:06:43,050 --> 00:06:43,060
travel through these issues and then
 

327
00:06:43,060 --> 00:06:45,809
travel through these issues and then
everything is going to be fine also it

328
00:06:45,809 --> 00:06:45,819
everything is going to be fine also it
 

329
00:06:45,819 --> 00:06:47,519
everything is going to be fine also it
would be really helpful if you post the

330
00:06:47,519 --> 00:06:47,529
would be really helpful if you post the
 

331
00:06:47,529 --> 00:06:49,409
would be really helpful if you post the
errors you get and the solutions you

332
00:06:49,409 --> 00:06:49,419
errors you get and the solutions you
 

333
00:06:49,419 --> 00:06:51,420
errors you get and the solutions you
find in the discussion board because I

334
00:06:51,420 --> 00:06:51,430
find in the discussion board because I
 

335
00:06:51,430 --> 00:06:53,189
find in the discussion board because I
can get all these various errors and

336
00:06:53,189 --> 00:06:53,199
can get all these various errors and
 

337
00:06:53,199 --> 00:06:55,709
can get all these various errors and
compile them into a PDF and that would

338
00:06:55,709 --> 00:06:55,719
compile them into a PDF and that would
 

339
00:06:55,719 --> 00:06:57,629
compile them into a PDF and that would
be very valuable resource for future

340
00:06:57,629 --> 00:06:57,639
be very valuable resource for future
 

341
00:06:57,639 --> 00:07:00,350
be very valuable resource for future
students of this course

342
00:07:00,350 --> 00:07:00,360
students of this course
 

343
00:07:00,360 --> 00:07:02,990
students of this course
now what if you're a Mac user you have

344
00:07:02,990 --> 00:07:03,000
now what if you're a Mac user you have
 

345
00:07:03,000 --> 00:07:05,689
now what if you're a Mac user you have
two options you can either use xamarin

346
00:07:05,689 --> 00:07:05,699
two options you can either use xamarin
 

347
00:07:05,699 --> 00:07:07,339
two options you can either use xamarin
studio on a Mac which is a lightweight

348
00:07:07,339 --> 00:07:07,349
studio on a Mac which is a lightweight
 

349
00:07:07,349 --> 00:07:10,730
studio on a Mac which is a lightweight
ide similar to visual studio or you can

350
00:07:10,730 --> 00:07:10,740
ide similar to visual studio or you can
 

351
00:07:10,740 --> 00:07:12,830
ide similar to visual studio or you can
use Visual Studio but this requires a

352
00:07:12,830 --> 00:07:12,840
use Visual Studio but this requires a
 

353
00:07:12,840 --> 00:07:15,770
use Visual Studio but this requires a
Windows machine in my set up I'm running

354
00:07:15,770 --> 00:07:15,780
Windows machine in my set up I'm running
 

355
00:07:15,780 --> 00:07:17,809
Windows machine in my set up I'm running
Windows as a virtual machine using

356
00:07:17,809 --> 00:07:17,819
Windows as a virtual machine using
 

357
00:07:17,819 --> 00:07:21,619
Windows as a virtual machine using
VMware which option is better samer in

358
00:07:21,619 --> 00:07:21,629
VMware which option is better samer in
 

359
00:07:21,629 --> 00:07:24,020
VMware which option is better samer in
studio is the fastest option you simply

360
00:07:24,020 --> 00:07:24,030
studio is the fastest option you simply
 

361
00:07:24,030 --> 00:07:26,209
studio is the fastest option you simply
head over to zombocom slash download and

362
00:07:26,209 --> 00:07:26,219
head over to zombocom slash download and
 

363
00:07:26,219 --> 00:07:28,429
head over to zombocom slash download and
get xamarin studio and you're good to go

364
00:07:28,429 --> 00:07:28,439
get xamarin studio and you're good to go
 

365
00:07:28,439 --> 00:07:30,980
get xamarin studio and you're good to go
we can build apps for iOS and Android

366
00:07:30,980 --> 00:07:30,990
we can build apps for iOS and Android
 

367
00:07:30,990 --> 00:07:33,529
we can build apps for iOS and Android
but not for Windows if you want to

368
00:07:33,529 --> 00:07:33,539
but not for Windows if you want to
 

369
00:07:33,539 --> 00:07:35,119
but not for Windows if you want to
target Windows you need a Windows

370
00:07:35,119 --> 00:07:35,129
target Windows you need a Windows
 

371
00:07:35,129 --> 00:07:37,730
target Windows you need a Windows
machine so you can either get a physical

372
00:07:37,730 --> 00:07:37,740
machine so you can either get a physical
 

373
00:07:37,740 --> 00:07:39,890
machine so you can either get a physical
machine or use a virtual machine like me

374
00:07:39,890 --> 00:07:39,900
machine or use a virtual machine like me
 

375
00:07:39,900 --> 00:07:41,659
machine or use a virtual machine like me
then you need to follow the same steps

376
00:07:41,659 --> 00:07:41,669
then you need to follow the same steps
 

377
00:07:41,669 --> 00:07:43,909
then you need to follow the same steps
to install Sam rein on your Windows

378
00:07:43,909 --> 00:07:43,919
to install Sam rein on your Windows
 

379
00:07:43,919 --> 00:07:46,790
to install Sam rein on your Windows
machine in this video I'm going to show

380
00:07:46,790 --> 00:07:46,800
machine in this video I'm going to show
 

381
00:07:46,800 --> 00:07:48,740
machine in this video I'm going to show
you how to create a xamarin forms app in

382
00:07:48,740 --> 00:07:48,750
you how to create a xamarin forms app in
 

383
00:07:48,750 --> 00:07:51,409
you how to create a xamarin forms app in
Visual Studio whether you're a Windows

384
00:07:51,409 --> 00:07:51,419
Visual Studio whether you're a Windows
 

385
00:07:51,419 --> 00:07:53,300
Visual Studio whether you're a Windows
or a Mac user watch this video

386
00:07:53,300 --> 00:07:53,310
or a Mac user watch this video
 

387
00:07:53,310 --> 00:07:55,670
or a Mac user watch this video
thoroughly so here I am using visual

388
00:07:55,670 --> 00:07:55,680
thoroughly so here I am using visual
 

389
00:07:55,680 --> 00:08:01,480
thoroughly so here I am using visual
studio 2015 let's create a new project

390
00:08:01,480 --> 00:08:01,490

 

391
00:08:01,490 --> 00:08:04,190

under visual c-sharp templates select

392
00:08:04,190 --> 00:08:04,200
under visual c-sharp templates select
 

393
00:08:04,200 --> 00:08:07,910
under visual c-sharp templates select
cross platform for xamarin forms apps we

394
00:08:07,910 --> 00:08:07,920
cross platform for xamarin forms apps we
 

395
00:08:07,920 --> 00:08:10,220
cross platform for xamarin forms apps we
have two options here portable class

396
00:08:10,220 --> 00:08:10,230
have two options here portable class
 

397
00:08:10,230 --> 00:08:13,850
have two options here portable class
library or shared assets the preferred

398
00:08:13,850 --> 00:08:13,860
library or shared assets the preferred
 

399
00:08:13,860 --> 00:08:15,950
library or shared assets the preferred
way and the best practice recommended by

400
00:08:15,950 --> 00:08:15,960
way and the best practice recommended by
 

401
00:08:15,960 --> 00:08:18,380
way and the best practice recommended by
xamarin is a portable class library if

402
00:08:18,380 --> 00:08:18,390
xamarin is a portable class library if
 

403
00:08:18,390 --> 00:08:20,390
xamarin is a portable class library if
you want to understand the differences

404
00:08:20,390 --> 00:08:20,400
you want to understand the differences
 

405
00:08:20,400 --> 00:08:22,370
you want to understand the differences
between these two project types I'll

406
00:08:22,370 --> 00:08:22,380
between these two project types I'll
 

407
00:08:22,380 --> 00:08:24,500
between these two project types I'll
attach a PDF for you for further reading

408
00:08:24,500 --> 00:08:24,510
attach a PDF for you for further reading
 

409
00:08:24,510 --> 00:08:27,800
attach a PDF for you for further reading
but read it after watching this video so

410
00:08:27,800 --> 00:08:27,810
but read it after watching this video so
 

411
00:08:27,810 --> 00:08:29,360
but read it after watching this video so
let's go ahead with this portable class

412
00:08:29,360 --> 00:08:29,370
let's go ahead with this portable class
 

413
00:08:29,370 --> 00:08:31,790
let's go ahead with this portable class
library I'm going to call our

414
00:08:31,790 --> 00:08:31,800
library I'm going to call our
 

415
00:08:31,800 --> 00:08:35,380
library I'm going to call our
application hello world okay

416
00:08:35,380 --> 00:08:35,390
application hello world okay
 

417
00:08:35,390 --> 00:08:37,760
application hello world okay
now this process is going to take a few

418
00:08:37,760 --> 00:08:37,770
now this process is going to take a few
 

419
00:08:37,770 --> 00:08:39,200
now this process is going to take a few
seconds so I'm going to pause the

420
00:08:39,200 --> 00:08:39,210
seconds so I'm going to pause the
 

421
00:08:39,210 --> 00:08:41,759
seconds so I'm going to pause the
recording

422
00:08:41,759 --> 00:08:41,769

 

423
00:08:41,769 --> 00:08:43,569

okay next you're going to see this

424
00:08:43,569 --> 00:08:43,579
okay next you're going to see this
 

425
00:08:43,579 --> 00:08:45,819
okay next you're going to see this
dialog where we select the target and

426
00:08:45,819 --> 00:08:45,829
dialog where we select the target and
 

427
00:08:45,829 --> 00:08:48,369
dialog where we select the target and
minimum version for Universal windows

428
00:08:48,369 --> 00:08:48,379
minimum version for Universal windows
 

429
00:08:48,379 --> 00:08:50,829
minimum version for Universal windows
apps a universal Windows app can run

430
00:08:50,829 --> 00:08:50,839
apps a universal Windows app can run
 

431
00:08:50,839 --> 00:08:53,170
apps a universal Windows app can run
under Windows 10 or Windows 10 mobile

432
00:08:53,170 --> 00:08:53,180
under Windows 10 or Windows 10 mobile
 

433
00:08:53,180 --> 00:08:55,389
under Windows 10 or Windows 10 mobile
without the need to be written for each

434
00:08:55,389 --> 00:08:55,399
without the need to be written for each
 

435
00:08:55,399 --> 00:08:59,490
without the need to be written for each
I'm going to accept the defaults here

436
00:08:59,490 --> 00:08:59,500
I'm going to accept the defaults here
 

437
00:08:59,500 --> 00:09:03,160
I'm going to accept the defaults here
okay our solution is ready now before

438
00:09:03,160 --> 00:09:03,170
okay our solution is ready now before
 

439
00:09:03,170 --> 00:09:04,090
okay our solution is ready now before
looking at the structure of this

440
00:09:04,090 --> 00:09:04,100
looking at the structure of this
 

441
00:09:04,100 --> 00:09:06,670
looking at the structure of this
solution as a best practice whenever you

442
00:09:06,670 --> 00:09:06,680
solution as a best practice whenever you
 

443
00:09:06,680 --> 00:09:08,220
solution as a best practice whenever you
create a new salmon forms app

444
00:09:08,220 --> 00:09:08,230
create a new salmon forms app
 

445
00:09:08,230 --> 00:09:11,470
create a new salmon forms app
right-click the solution and go to

446
00:09:11,470 --> 00:09:11,480
right-click the solution and go to
 

447
00:09:11,480 --> 00:09:16,420
right-click the solution and go to
manage NuGet packages for solution then

448
00:09:16,420 --> 00:09:16,430
manage NuGet packages for solution then
 

449
00:09:16,430 --> 00:09:19,660
manage NuGet packages for solution then
go to the Updates tab and make sure to

450
00:09:19,660 --> 00:09:19,670
go to the Updates tab and make sure to
 

451
00:09:19,670 --> 00:09:23,490
go to the Updates tab and make sure to
select all packages and update them

452
00:09:23,490 --> 00:09:23,500
select all packages and update them
 

453
00:09:23,500 --> 00:09:26,290
select all packages and update them
because ambereen frequently releases new

454
00:09:26,290 --> 00:09:26,300
because ambereen frequently releases new
 

455
00:09:26,300 --> 00:09:28,760
because ambereen frequently releases new
libraries

456
00:09:28,760 --> 00:09:28,770
libraries
 

457
00:09:28,770 --> 00:09:31,670
libraries
okay as part of this update process one

458
00:09:31,670 --> 00:09:31,680
okay as part of this update process one
 

459
00:09:31,680 --> 00:09:33,139
okay as part of this update process one
of the older packages is going to be

460
00:09:33,139 --> 00:09:33,149
of the older packages is going to be
 

461
00:09:33,149 --> 00:09:34,730
of the older packages is going to be
uninstalled and for that you need to

462
00:09:34,730 --> 00:09:34,740
uninstalled and for that you need to
 

463
00:09:34,740 --> 00:09:41,320
uninstalled and for that you need to
restart Visual Studio so we're start yes

464
00:09:41,320 --> 00:09:41,330

 

465
00:09:41,330 --> 00:09:43,540

okay all the packages are updated

466
00:09:43,540 --> 00:09:43,550
okay all the packages are updated
 

467
00:09:43,550 --> 00:09:45,690
okay all the packages are updated
properly now let's see what we got here

468
00:09:45,690 --> 00:09:45,700
properly now let's see what we got here
 

469
00:09:45,700 --> 00:09:48,519
properly now let's see what we got here
so in this solution we have six projects

470
00:09:48,519 --> 00:09:48,529
so in this solution we have six projects
 

471
00:09:48,529 --> 00:09:51,340
so in this solution we have six projects
the first one is our portable class

472
00:09:51,340 --> 00:09:51,350
the first one is our portable class
 

473
00:09:51,350 --> 00:09:53,560
the first one is our portable class
library and this is where we're going to

474
00:09:53,560 --> 00:09:53,570
library and this is where we're going to
 

475
00:09:53,570 --> 00:09:55,930
library and this is where we're going to
do most of the work so all the code that

476
00:09:55,930 --> 00:09:55,940
do most of the work so all the code that
 

477
00:09:55,940 --> 00:09:57,490
do most of the work so all the code that
should be shared across different

478
00:09:57,490 --> 00:09:57,500
should be shared across different
 

479
00:09:57,500 --> 00:10:00,490
should be shared across different
platforms should be written here and if

480
00:10:00,490 --> 00:10:00,500
platforms should be written here and if
 

481
00:10:00,500 --> 00:10:02,410
platforms should be written here and if
you look inside we only have one class

482
00:10:02,410 --> 00:10:02,420
you look inside we only have one class
 

483
00:10:02,420 --> 00:10:05,259
you look inside we only have one class
app which is the starting point of our

484
00:10:05,259 --> 00:10:05,269
app which is the starting point of our
 

485
00:10:05,269 --> 00:10:06,420
app which is the starting point of our
application

486
00:10:06,420 --> 00:10:06,430
application
 

487
00:10:06,430 --> 00:10:09,220
application
next we have five platform specific

488
00:10:09,220 --> 00:10:09,230
next we have five platform specific
 

489
00:10:09,230 --> 00:10:12,550
next we have five platform specific
projects one for Android one for ILS one

490
00:10:12,550 --> 00:10:12,560
projects one for Android one for ILS one
 

491
00:10:12,560 --> 00:10:14,620
projects one for Android one for ILS one
for Universal windows apps which can run

492
00:10:14,620 --> 00:10:14,630
for Universal windows apps which can run
 

493
00:10:14,630 --> 00:10:17,009
for Universal windows apps which can run
on Windows 10 or Windows 10 mobile and

494
00:10:17,009 --> 00:10:17,019
on Windows 10 or Windows 10 mobile and
 

495
00:10:17,019 --> 00:10:20,440
on Windows 10 or Windows 10 mobile and
one for Windows 8.1 and the last one for

496
00:10:20,440 --> 00:10:20,450
one for Windows 8.1 and the last one for
 

497
00:10:20,450 --> 00:10:23,590
one for Windows 8.1 and the last one for
Windows Phone 8.1 so anytime we want to

498
00:10:23,590 --> 00:10:23,600
Windows Phone 8.1 so anytime we want to
 

499
00:10:23,600 --> 00:10:25,990
Windows Phone 8.1 so anytime we want to
write platform specific code will write

500
00:10:25,990 --> 00:10:26,000
write platform specific code will write
 

501
00:10:26,000 --> 00:10:28,360
write platform specific code will write
it in these projects as I explained

502
00:10:28,360 --> 00:10:28,370
it in these projects as I explained
 

503
00:10:28,370 --> 00:10:30,130
it in these projects as I explained
before the whole idea about xamarin

504
00:10:30,130 --> 00:10:30,140
before the whole idea about xamarin
 

505
00:10:30,140 --> 00:10:33,130
before the whole idea about xamarin
forms is about code reuse we want to

506
00:10:33,130 --> 00:10:33,140
forms is about code reuse we want to
 

507
00:10:33,140 --> 00:10:35,079
forms is about code reuse we want to
write code that can run across different

508
00:10:35,079 --> 00:10:35,089
write code that can run across different
 

509
00:10:35,089 --> 00:10:37,540
write code that can run across different
platforms that's why we do most of our

510
00:10:37,540 --> 00:10:37,550
platforms that's why we do most of our
 

511
00:10:37,550 --> 00:10:40,389
platforms that's why we do most of our
work in the portable class library all

512
00:10:40,389 --> 00:10:40,399
work in the portable class library all
 

513
00:10:40,399 --> 00:10:42,100
work in the portable class library all
these projects you see here have a

514
00:10:42,100 --> 00:10:42,110
these projects you see here have a
 

515
00:10:42,110 --> 00:10:45,310
these projects you see here have a
reference to this class library now if

516
00:10:45,310 --> 00:10:45,320
reference to this class library now if
 

517
00:10:45,320 --> 00:10:47,290
reference to this class library now if
you don't have a Mac you're not going to

518
00:10:47,290 --> 00:10:47,300
you don't have a Mac you're not going to
 

519
00:10:47,300 --> 00:10:51,160
you don't have a Mac you're not going to
see this iOS project here also let's say

520
00:10:51,160 --> 00:10:51,170
see this iOS project here also let's say
 

521
00:10:51,170 --> 00:10:52,630
see this iOS project here also let's say
you only want to build an app for

522
00:10:52,630 --> 00:10:52,640
you only want to build an app for
 

523
00:10:52,640 --> 00:10:54,790
you only want to build an app for
Android and don't care about other

524
00:10:54,790 --> 00:10:54,800
Android and don't care about other
 

525
00:10:54,800 --> 00:10:56,889
Android and don't care about other
platforms you can simply delete these

526
00:10:56,889 --> 00:10:56,899
platforms you can simply delete these
 

527
00:10:56,899 --> 00:10:58,810
platforms you can simply delete these
projects here and if in the future you

528
00:10:58,810 --> 00:10:58,820
projects here and if in the future you
 

529
00:10:58,820 --> 00:11:01,060
projects here and if in the future you
decide to support them you can simply

530
00:11:01,060 --> 00:11:01,070
decide to support them you can simply
 

531
00:11:01,070 --> 00:11:04,660
decide to support them you can simply
right-click the solution add a new

532
00:11:04,660 --> 00:11:04,670
right-click the solution add a new
 

533
00:11:04,670 --> 00:11:07,630
right-click the solution add a new
project let's say you want to target iOS

534
00:11:07,630 --> 00:11:07,640
project let's say you want to target iOS
 

535
00:11:07,640 --> 00:11:14,519
project let's say you want to target iOS
then under iOS expand it universal and

536
00:11:14,519 --> 00:11:14,529
then under iOS expand it universal and
 

537
00:11:14,529 --> 00:11:17,650
then under iOS expand it universal and
here is the blank app template so you

538
00:11:17,650 --> 00:11:17,660
here is the blank app template so you
 

539
00:11:17,660 --> 00:11:19,329
here is the blank app template so you
just add a project to your solution and

540
00:11:19,329 --> 00:11:19,339
just add a project to your solution and
 

541
00:11:19,339 --> 00:11:20,460
just add a project to your solution and
you're good to go

542
00:11:20,460 --> 00:11:20,470
you're good to go
 

543
00:11:20,470 --> 00:11:23,620
you're good to go
okay now let's run this app you can see

544
00:11:23,620 --> 00:11:23,630
okay now let's run this app you can see
 

545
00:11:23,630 --> 00:11:26,260
okay now let's run this app you can see
that currently hello world that droid is

546
00:11:26,260 --> 00:11:26,270
that currently hello world that droid is
 

547
00:11:26,270 --> 00:11:29,949
that currently hello world that droid is
set as the startup project so if I press

548
00:11:29,949 --> 00:11:29,959
set as the startup project so if I press
 

549
00:11:29,959 --> 00:11:32,740
set as the startup project so if I press
ctrl + f5 is going to be loaded in an

550
00:11:32,740 --> 00:11:32,750
ctrl + f5 is going to be loaded in an
 

551
00:11:32,750 --> 00:11:36,370
ctrl + f5 is going to be loaded in an
Android emulator here on the toolbar you

552
00:11:36,370 --> 00:11:36,380
Android emulator here on the toolbar you
 

553
00:11:36,380 --> 00:11:38,740
Android emulator here on the toolbar you
can see the list of emulators installed

554
00:11:38,740 --> 00:11:38,750
can see the list of emulators installed
 

555
00:11:38,750 --> 00:11:42,490
can see the list of emulators installed
on my machine these emulators come as

556
00:11:42,490 --> 00:11:42,500
on my machine these emulators come as
 

557
00:11:42,500 --> 00:11:44,650
on my machine these emulators come as
part of installing xamarin so if

558
00:11:44,650 --> 00:11:44,660
part of installing xamarin so if
 

559
00:11:44,660 --> 00:11:46,060
part of installing xamarin so if
everything goes well during the

560
00:11:46,060 --> 00:11:46,070
everything goes well during the
 

561
00:11:46,070 --> 00:11:47,980
everything goes well during the
installation you should see quite a few

562
00:11:47,980 --> 00:11:47,990
installation you should see quite a few
 

563
00:11:47,990 --> 00:11:51,130
installation you should see quite a few
emulators here but in my case because

564
00:11:51,130 --> 00:11:51,140
emulators here but in my case because
 

565
00:11:51,140 --> 00:11:52,600
emulators here but in my case because
I'm running Windows in a virtual machine

566
00:11:52,600 --> 00:11:52,610
I'm running Windows in a virtual machine
 

567
00:11:52,610 --> 00:11:54,940
I'm running Windows in a virtual machine
on a Mac I had to manually

568
00:11:54,940 --> 00:11:54,950
on a Mac I had to manually
 

569
00:11:54,950 --> 00:11:58,210
on a Mac I had to manually
all Android emulators if you want to

570
00:11:58,210 --> 00:11:58,220
all Android emulators if you want to
 

571
00:11:58,220 --> 00:12:00,100
all Android emulators if you want to
deploy and debug your application on a

572
00:12:00,100 --> 00:12:00,110
deploy and debug your application on a
 

573
00:12:00,110 --> 00:12:02,080
deploy and debug your application on a
real device you need to set it up for

574
00:12:02,080 --> 00:12:02,090
real device you need to set it up for
 

575
00:12:02,090 --> 00:12:04,090
real device you need to set it up for
development first and then you can see

576
00:12:04,090 --> 00:12:04,100
development first and then you can see
 

577
00:12:04,100 --> 00:12:06,910
development first and then you can see
it listed here so you simply select it

578
00:12:06,910 --> 00:12:06,920
it listed here so you simply select it
 

579
00:12:06,920 --> 00:12:09,280
it listed here so you simply select it
and then press control f5 to deploy and

580
00:12:09,280 --> 00:12:09,290
and then press control f5 to deploy and
 

581
00:12:09,290 --> 00:12:12,280
and then press control f5 to deploy and
run the app on your device or f5 to

582
00:12:12,280 --> 00:12:12,290
run the app on your device or f5 to
 

583
00:12:12,290 --> 00:12:14,110
run the app on your device or f5 to
debug it and these are the shortcuts

584
00:12:14,110 --> 00:12:14,120
debug it and these are the shortcuts
 

585
00:12:14,120 --> 00:12:15,370
debug it and these are the shortcuts
that we always used in c-sharp

586
00:12:15,370 --> 00:12:15,380
that we always used in c-sharp
 

587
00:12:15,380 --> 00:12:18,070
that we always used in c-sharp
development I've attached the PDF to

588
00:12:18,070 --> 00:12:18,080
development I've attached the PDF to
 

589
00:12:18,080 --> 00:12:19,840
development I've attached the PDF to
this lecture with additional details

590
00:12:19,840 --> 00:12:19,850
this lecture with additional details
 

591
00:12:19,850 --> 00:12:21,700
this lecture with additional details
about setting up your Android or iOS

592
00:12:21,700 --> 00:12:21,710
about setting up your Android or iOS
 

593
00:12:21,710 --> 00:12:24,070
about setting up your Android or iOS
device for development now let's run

594
00:12:24,070 --> 00:12:24,080
device for development now let's run
 

595
00:12:24,080 --> 00:12:27,520
device for development now let's run
this app control f5 now the first time

596
00:12:27,520 --> 00:12:27,530
this app control f5 now the first time
 

597
00:12:27,530 --> 00:12:29,770
this app control f5 now the first time
you launch Android emulator you're going

598
00:12:29,770 --> 00:12:29,780
you launch Android emulator you're going
 

599
00:12:29,780 --> 00:12:31,750
you launch Android emulator you're going
to wait quite a few minutes even up to

600
00:12:31,750 --> 00:12:31,760
to wait quite a few minutes even up to
 

601
00:12:31,760 --> 00:12:33,640
to wait quite a few minutes even up to
10 or 15 minutes depending on your

602
00:12:33,640 --> 00:12:33,650
10 or 15 minutes depending on your
 

603
00:12:33,650 --> 00:12:37,100
10 or 15 minutes depending on your
hardware so please be patient

604
00:12:37,100 --> 00:12:37,110
hardware so please be patient
 

605
00:12:37,110 --> 00:12:40,819
hardware so please be patient
and here is my Android emulator and you

606
00:12:40,819 --> 00:12:40,829
and here is my Android emulator and you
 

607
00:12:40,829 --> 00:12:42,769
and here is my Android emulator and you
can see our first summer informs app is

608
00:12:42,769 --> 00:12:42,779
can see our first summer informs app is
 

609
00:12:42,779 --> 00:12:45,290
can see our first summer informs app is
running successfully so this app is just

610
00:12:45,290 --> 00:12:45,300
running successfully so this app is just
 

611
00:12:45,300 --> 00:12:47,780
running successfully so this app is just
a single page with a label in the middle

612
00:12:47,780 --> 00:12:47,790
a single page with a label in the middle
 

613
00:12:47,790 --> 00:12:50,750
a single page with a label in the middle
of the screen now your emulator may look

614
00:12:50,750 --> 00:12:50,760
of the screen now your emulator may look
 

615
00:12:50,760 --> 00:12:52,699
of the screen now your emulator may look
different in terms of its size and the

616
00:12:52,699 --> 00:12:52,709
different in terms of its size and the
 

617
00:12:52,709 --> 00:12:55,250
different in terms of its size and the
controls you have here but all these are

618
00:12:55,250 --> 00:12:55,260
controls you have here but all these are
 

619
00:12:55,260 --> 00:12:57,019
controls you have here but all these are
settings that can be changed when

620
00:12:57,019 --> 00:12:57,029
settings that can be changed when
 

621
00:12:57,029 --> 00:13:00,769
settings that can be changed when
creating an emulator manually now let's

622
00:13:00,769 --> 00:13:00,779
creating an emulator manually now let's
 

623
00:13:00,779 --> 00:13:02,780
creating an emulator manually now let's
say we want to run this app in an iOS

624
00:13:02,780 --> 00:13:02,790
say we want to run this app in an iOS
 

625
00:13:02,790 --> 00:13:05,600
say we want to run this app in an iOS
simulator so we right-click the iOS

626
00:13:05,600 --> 00:13:05,610
simulator so we right-click the iOS
 

627
00:13:05,610 --> 00:13:10,120
simulator so we right-click the iOS
project and set it as a startup project

628
00:13:10,120 --> 00:13:10,130
project and set it as a startup project
 

629
00:13:10,130 --> 00:13:13,730
project and set it as a startup project
then on the toolbar I can either deploy

630
00:13:13,730 --> 00:13:13,740
then on the toolbar I can either deploy
 

631
00:13:13,740 --> 00:13:15,889
then on the toolbar I can either deploy
to my device because I have an iPhone or

632
00:13:15,889 --> 00:13:15,899
to my device because I have an iPhone or
 

633
00:13:15,899 --> 00:13:19,490
to my device because I have an iPhone or
use one of these simulators iPhone 4 5 6

634
00:13:19,490 --> 00:13:19,500
use one of these simulators iPhone 4 5 6
 

635
00:13:19,500 --> 00:13:22,420
use one of these simulators iPhone 4 5 6
ipad and so on

636
00:13:22,420 --> 00:13:22,430
ipad and so on
 

637
00:13:22,430 --> 00:13:25,880
ipad and so on
now this simulator actually runs on my

638
00:13:25,880 --> 00:13:25,890
now this simulator actually runs on my
 

639
00:13:25,890 --> 00:13:28,880
now this simulator actually runs on my
Mac not on the windows and here on the

640
00:13:28,880 --> 00:13:28,890
Mac not on the windows and here on the
 

641
00:13:28,890 --> 00:13:31,400
Mac not on the windows and here on the
toolbar we have this icon xamarin Mac

642
00:13:31,400 --> 00:13:31,410
toolbar we have this icon xamarin Mac
 

643
00:13:31,410 --> 00:13:34,880
toolbar we have this icon xamarin Mac
agent if you don't see this toolbar go

644
00:13:34,880 --> 00:13:34,890
agent if you don't see this toolbar go
 

645
00:13:34,890 --> 00:13:40,040
agent if you don't see this toolbar go
to the View menu under toolbars select

646
00:13:40,040 --> 00:13:40,050
to the View menu under toolbars select
 

647
00:13:40,050 --> 00:13:42,949
to the View menu under toolbars select
iOS we also have a toolbar for Android

648
00:13:42,949 --> 00:13:42,959
iOS we also have a toolbar for Android
 

649
00:13:42,959 --> 00:13:47,900
iOS we also have a toolbar for Android
but I have disabled it for now so with

650
00:13:47,900 --> 00:13:47,910
but I have disabled it for now so with
 

651
00:13:47,910 --> 00:13:51,560
but I have disabled it for now so with
this xamarin Mac agent we can select the

652
00:13:51,560 --> 00:13:51,570
this xamarin Mac agent we can select the
 

653
00:13:51,570 --> 00:13:53,960
this xamarin Mac agent we can select the
Mac on our network that is responsible

654
00:13:53,960 --> 00:13:53,970
Mac on our network that is responsible
 

655
00:13:53,970 --> 00:13:57,079
Mac on our network that is responsible
for launching the simulator so visual

656
00:13:57,079 --> 00:13:57,089
for launching the simulator so visual
 

657
00:13:57,089 --> 00:13:59,090
for launching the simulator so visual
studio talks to as a Marine agent on a

658
00:13:59,090 --> 00:13:59,100
studio talks to as a Marine agent on a
 

659
00:13:59,100 --> 00:14:02,180
studio talks to as a Marine agent on a
Mac in order to launch a simulator in

660
00:14:02,180 --> 00:14:02,190
Mac in order to launch a simulator in
 

661
00:14:02,190 --> 00:14:04,100
Mac in order to launch a simulator in
most cases your Mac should be

662
00:14:04,100 --> 00:14:04,110
most cases your Mac should be
 

663
00:14:04,110 --> 00:14:06,259
most cases your Mac should be
automatically detected but if not you

664
00:14:06,259 --> 00:14:06,269
automatically detected but if not you
 

665
00:14:06,269 --> 00:14:09,110
automatically detected but if not you
can simply click add a Mac add the IP

666
00:14:09,110 --> 00:14:09,120
can simply click add a Mac add the IP
 

667
00:14:09,120 --> 00:14:10,930
can simply click add a Mac add the IP
address here and you're good to go

668
00:14:10,930 --> 00:14:10,940
address here and you're good to go
 

669
00:14:10,940 --> 00:14:13,250
address here and you're good to go
just remember you need to install Sam

670
00:14:13,250 --> 00:14:13,260
just remember you need to install Sam
 

671
00:14:13,260 --> 00:14:15,680
just remember you need to install Sam
rain both on your windows and on your

672
00:14:15,680 --> 00:14:15,690
rain both on your windows and on your
 

673
00:14:15,690 --> 00:14:17,690
rain both on your windows and on your
Mac machine

674
00:14:17,690 --> 00:14:17,700
Mac machine
 

675
00:14:17,700 --> 00:14:21,380
Mac machine
now I can press control f5 and this will

676
00:14:21,380 --> 00:14:21,390
now I can press control f5 and this will
 

677
00:14:21,390 --> 00:14:24,870
now I can press control f5 and this will
launch my iPhone simulator on my Mac

678
00:14:24,870 --> 00:14:24,880
launch my iPhone simulator on my Mac
 

679
00:14:24,880 --> 00:14:27,300
launch my iPhone simulator on my Mac
okay and here's the same app running in

680
00:14:27,300 --> 00:14:27,310
okay and here's the same app running in
 

681
00:14:27,310 --> 00:14:30,420
okay and here's the same app running in
an iOS simulator next I'm going to show

682
00:14:30,420 --> 00:14:30,430
an iOS simulator next I'm going to show
 

683
00:14:30,430 --> 00:14:32,340
an iOS simulator next I'm going to show
you how to create a summary forms app

684
00:14:32,340 --> 00:14:32,350
you how to create a summary forms app
 

685
00:14:32,350 --> 00:14:37,710
you how to create a summary forms app
using xamarin studio alright now I'm

686
00:14:37,710 --> 00:14:37,720
using xamarin studio alright now I'm
 

687
00:14:37,720 --> 00:14:39,150
using xamarin studio alright now I'm
going to show you how to create a

688
00:14:39,150 --> 00:14:39,160
going to show you how to create a
 

689
00:14:39,160 --> 00:14:41,340
going to show you how to create a
xamarin forms a pin xamarin studio on a

690
00:14:41,340 --> 00:14:41,350
xamarin forms a pin xamarin studio on a
 

691
00:14:41,350 --> 00:14:43,829
xamarin forms a pin xamarin studio on a
Mac if you're a Windows user you can

692
00:14:43,829 --> 00:14:43,839
Mac if you're a Windows user you can
 

693
00:14:43,839 --> 00:14:45,749
Mac if you're a Windows user you can
skip this video but I encourage you to

694
00:14:45,749 --> 00:14:45,759
skip this video but I encourage you to
 

695
00:14:45,759 --> 00:14:47,699
skip this video but I encourage you to
watch it just to get familiar with what

696
00:14:47,699 --> 00:14:47,709
watch it just to get familiar with what
 

697
00:14:47,709 --> 00:14:49,379
watch it just to get familiar with what
your development environment on a Mac

698
00:14:49,379 --> 00:14:49,389
your development environment on a Mac
 

699
00:14:49,389 --> 00:14:51,389
your development environment on a Mac
would look like so here I'm using

700
00:14:51,389 --> 00:14:51,399
would look like so here I'm using
 

701
00:14:51,399 --> 00:14:53,759
would look like so here I'm using
xamarin studio version 6 and I have

702
00:14:53,759 --> 00:14:53,769
xamarin studio version 6 and I have
 

703
00:14:53,769 --> 00:14:56,189
xamarin studio version 6 and I have
changed my theme to dark let me show you

704
00:14:56,189 --> 00:14:56,199
changed my theme to dark let me show you
 

705
00:14:56,199 --> 00:14:59,309
changed my theme to dark let me show you
how to do it so on the top xamarin

706
00:14:59,309 --> 00:14:59,319
how to do it so on the top xamarin
 

707
00:14:59,319 --> 00:15:03,800
how to do it so on the top xamarin
studio Preferences under visual style

708
00:15:03,800 --> 00:15:03,810
studio Preferences under visual style
 

709
00:15:03,810 --> 00:15:08,460
studio Preferences under visual style
set the interface theme to dark alright

710
00:15:08,460 --> 00:15:08,470
set the interface theme to dark alright
 

711
00:15:08,470 --> 00:15:11,840
set the interface theme to dark alright
now let's create a new solution under

712
00:15:11,840 --> 00:15:11,850
now let's create a new solution under
 

713
00:15:11,850 --> 00:15:14,519
now let's create a new solution under
multi-platform category select app and

714
00:15:14,519 --> 00:15:14,529
multi-platform category select app and
 

715
00:15:14,529 --> 00:15:19,259
multi-platform category select app and
then forms app next I'm going to call

716
00:15:19,259 --> 00:15:19,269
then forms app next I'm going to call
 

717
00:15:19,269 --> 00:15:22,019
then forms app next I'm going to call
this hello world you can see both

718
00:15:22,019 --> 00:15:22,029
this hello world you can see both
 

719
00:15:22,029 --> 00:15:24,540
this hello world you can see both
Android and iOS are checked but we don't

720
00:15:24,540 --> 00:15:24,550
Android and iOS are checked but we don't
 

721
00:15:24,550 --> 00:15:26,639
Android and iOS are checked but we don't
have a checkbox for windows because in

722
00:15:26,639 --> 00:15:26,649
have a checkbox for windows because in
 

723
00:15:26,649 --> 00:15:28,259
have a checkbox for windows because in
xamarin studio you can the target

724
00:15:28,259 --> 00:15:28,269
xamarin studio you can the target
 

725
00:15:28,269 --> 00:15:30,240
xamarin studio you can the target
Windows and for that you need Visual

726
00:15:30,240 --> 00:15:30,250
Windows and for that you need Visual
 

727
00:15:30,250 --> 00:15:32,759
Windows and for that you need Visual
Studio now in terms of the shared code

728
00:15:32,759 --> 00:15:32,769
Studio now in terms of the shared code
 

729
00:15:32,769 --> 00:15:35,220
Studio now in terms of the shared code
the default setting is unused portable

730
00:15:35,220 --> 00:15:35,230
the default setting is unused portable
 

731
00:15:35,230 --> 00:15:37,949
the default setting is unused portable
class library the other option is use

732
00:15:37,949 --> 00:15:37,959
class library the other option is use
 

733
00:15:37,959 --> 00:15:39,809
class library the other option is use
shared library which is not something I

734
00:15:39,809 --> 00:15:39,819
shared library which is not something I
 

735
00:15:39,819 --> 00:15:41,819
shared library which is not something I
would recommend again if you want to

736
00:15:41,819 --> 00:15:41,829
would recommend again if you want to
 

737
00:15:41,829 --> 00:15:43,829
would recommend again if you want to
know the differences between a portable

738
00:15:43,829 --> 00:15:43,839
know the differences between a portable
 

739
00:15:43,839 --> 00:15:46,769
know the differences between a portable
class library and shared assets look at

740
00:15:46,769 --> 00:15:46,779
class library and shared assets look at
 

741
00:15:46,779 --> 00:15:48,590
class library and shared assets look at
the PDF I'm attached to this lecture

742
00:15:48,590 --> 00:15:48,600
the PDF I'm attached to this lecture
 

743
00:15:48,600 --> 00:15:52,499
the PDF I'm attached to this lecture
next I'm going to accept the defaults

744
00:15:52,499 --> 00:15:52,509
next I'm going to accept the defaults
 

745
00:15:52,509 --> 00:15:54,929
next I'm going to accept the defaults
here which are about location version

746
00:15:54,929 --> 00:15:54,939
here which are about location version
 

747
00:15:54,939 --> 00:15:57,629
here which are about location version
control and test clap so nothing

748
00:15:57,629 --> 00:15:57,639
control and test clap so nothing
 

749
00:15:57,639 --> 00:16:01,630
control and test clap so nothing
important at this point create

750
00:16:01,630 --> 00:16:01,640

 

751
00:16:01,640 --> 00:16:04,310

okay our project is ready and this is

752
00:16:04,310 --> 00:16:04,320
okay our project is ready and this is
 

753
00:16:04,320 --> 00:16:07,040
okay our project is ready and this is
much faster than Visual Studio now as I

754
00:16:07,040 --> 00:16:07,050
much faster than Visual Studio now as I
 

755
00:16:07,050 --> 00:16:08,600
much faster than Visual Studio now as I
told you in the last video as a best

756
00:16:08,600 --> 00:16:08,610
told you in the last video as a best
 

757
00:16:08,610 --> 00:16:10,490
told you in the last video as a best
practice whenever you create a new

758
00:16:10,490 --> 00:16:10,500
practice whenever you create a new
 

759
00:16:10,500 --> 00:16:12,800
practice whenever you create a new
xamarin forms app make sure to update

760
00:16:12,800 --> 00:16:12,810
xamarin forms app make sure to update
 

761
00:16:12,810 --> 00:16:15,350
xamarin forms app make sure to update
all the packages so right-click the

762
00:16:15,350 --> 00:16:15,360
all the packages so right-click the
 

763
00:16:15,360 --> 00:16:18,350
all the packages so right-click the
solution and go to update new get

764
00:16:18,350 --> 00:16:18,360
solution and go to update new get
 

765
00:16:18,360 --> 00:16:21,770
solution and go to update new get
packages you can see xamarin studio is

766
00:16:21,770 --> 00:16:21,780
packages you can see xamarin studio is
 

767
00:16:21,780 --> 00:16:23,930
packages you can see xamarin studio is
updating the packages and this is going

768
00:16:23,930 --> 00:16:23,940
updating the packages and this is going
 

769
00:16:23,940 --> 00:16:28,280
updating the packages and this is going
to take a little while okay all packages

770
00:16:28,280 --> 00:16:28,290
to take a little while okay all packages
 

771
00:16:28,290 --> 00:16:31,040
to take a little while okay all packages
are successfully updated now similar to

772
00:16:31,040 --> 00:16:31,050
are successfully updated now similar to
 

773
00:16:31,050 --> 00:16:33,230
are successfully updated now similar to
visual studio you can see that the iOS

774
00:16:33,230 --> 00:16:33,240
visual studio you can see that the iOS
 

775
00:16:33,240 --> 00:16:35,660
visual studio you can see that the iOS
project is set as the start of project

776
00:16:35,660 --> 00:16:35,670
project is set as the start of project
 

777
00:16:35,670 --> 00:16:38,210
project is set as the start of project
because it's bold and here on the

778
00:16:38,210 --> 00:16:38,220
because it's bold and here on the
 

779
00:16:38,220 --> 00:16:41,690
because it's bold and here on the
toolbar we can select a simulator so

780
00:16:41,690 --> 00:16:41,700
toolbar we can select a simulator so
 

781
00:16:41,700 --> 00:16:43,670
toolbar we can select a simulator so
we've got various versions of iPhone and

782
00:16:43,670 --> 00:16:43,680
we've got various versions of iPhone and
 

783
00:16:43,680 --> 00:16:46,930
we've got various versions of iPhone and
iPad or we can deploy to a real device

784
00:16:46,930 --> 00:16:46,940
iPad or we can deploy to a real device
 

785
00:16:46,940 --> 00:16:49,790
iPad or we can deploy to a real device
now to run this application you press

786
00:16:49,790 --> 00:16:49,800
now to run this application you press
 

787
00:16:49,800 --> 00:16:53,210
now to run this application you press
command alt and enter and then iOS

788
00:16:53,210 --> 00:16:53,220
command alt and enter and then iOS
 

789
00:16:53,220 --> 00:16:54,980
command alt and enter and then iOS
simulator launches and loads our

790
00:16:54,980 --> 00:16:54,990
simulator launches and loads our
 

791
00:16:54,990 --> 00:16:57,230
simulator launches and loads our
application if you want to try the

792
00:16:57,230 --> 00:16:57,240
application if you want to try the
 

793
00:16:57,240 --> 00:17:01,330
application if you want to try the
Android app right click this project and

794
00:17:01,330 --> 00:17:01,340
Android app right click this project and
 

795
00:17:01,340 --> 00:17:05,960
Android app right click this project and
set it as startup project now you see

796
00:17:05,960 --> 00:17:05,970
set it as startup project now you see
 

797
00:17:05,970 --> 00:17:09,710
set it as startup project now you see
all the Android emulators here so

798
00:17:09,710 --> 00:17:09,720
all the Android emulators here so
 

799
00:17:09,720 --> 00:17:11,270
all the Android emulators here so
throughout this course I'll be using

800
00:17:11,270 --> 00:17:11,280
throughout this course I'll be using
 

801
00:17:11,280 --> 00:17:13,250
throughout this course I'll be using
xamarin studio to do my development

802
00:17:13,250 --> 00:17:13,260
xamarin studio to do my development
 

803
00:17:13,260 --> 00:17:15,170
xamarin studio to do my development
because it's much faster and more

804
00:17:15,170 --> 00:17:15,180
because it's much faster and more
 

805
00:17:15,180 --> 00:17:17,449
because it's much faster and more
lightweight if you want to use visual

806
00:17:17,449 --> 00:17:17,459
lightweight if you want to use visual
 

807
00:17:17,459 --> 00:17:19,579
lightweight if you want to use visual
studio that's perfectly fine all the

808
00:17:19,579 --> 00:17:19,589
studio that's perfectly fine all the
 

809
00:17:19,589 --> 00:17:20,870
studio that's perfectly fine all the
code I'm going to write in this course

810
00:17:20,870 --> 00:17:20,880
code I'm going to write in this course
 

811
00:17:20,880 --> 00:17:23,240
code I'm going to write in this course
is exactly the same and it doesn't

812
00:17:23,240 --> 00:17:23,250
is exactly the same and it doesn't
 

813
00:17:23,250 --> 00:17:25,280
is exactly the same and it doesn't
matter which IDE use it's entirely your

814
00:17:25,280 --> 00:17:25,290
matter which IDE use it's entirely your
 

815
00:17:25,290 --> 00:17:27,890
matter which IDE use it's entirely your
personal choice alright next we're going

816
00:17:27,890 --> 00:17:27,900
personal choice alright next we're going
 

817
00:17:27,900 --> 00:17:29,450
personal choice alright next we're going
to explore this application in more

818
00:17:29,450 --> 00:17:29,460
to explore this application in more
 

819
00:17:29,460 --> 00:17:32,480
to explore this application in more
detail and add a bit of functionality so

820
00:17:32,480 --> 00:17:32,490
detail and add a bit of functionality so
 

821
00:17:32,490 --> 00:17:34,520
detail and add a bit of functionality so
you will see both zamel and code behind

822
00:17:34,520 --> 00:17:34,530
you will see both zamel and code behind
 

823
00:17:34,530 --> 00:17:39,260
you will see both zamel and code behind
in action alright this is what I'm going

824
00:17:39,260 --> 00:17:39,270
in action alright this is what I'm going
 

825
00:17:39,270 --> 00:17:41,270
in action alright this is what I'm going
to build now I want to add a new page to

826
00:17:41,270 --> 00:17:41,280
to build now I want to add a new page to
 

827
00:17:41,280 --> 00:17:43,610
to build now I want to add a new page to
our app with a button in the middle of

828
00:17:43,610 --> 00:17:43,620
our app with a button in the middle of
 

829
00:17:43,620 --> 00:17:46,760
our app with a button in the middle of
the screen in iOS buttons don't have a

830
00:17:46,760 --> 00:17:46,770
the screen in iOS buttons don't have a
 

831
00:17:46,770 --> 00:17:50,360
the screen in iOS buttons don't have a
border they look like labels so when we

832
00:17:50,360 --> 00:17:50,370
border they look like labels so when we
 

833
00:17:50,370 --> 00:17:53,780
border they look like labels so when we
click this button we get an alert so

834
00:17:53,780 --> 00:17:53,790
click this button we get an alert so
 

835
00:17:53,790 --> 00:17:57,380
click this button we get an alert so
let's go ahead and implement this all

836
00:17:57,380 --> 00:17:57,390
let's go ahead and implement this all
 

837
00:17:57,390 --> 00:17:58,850
let's go ahead and implement this all
right as I explained in the last lecture

838
00:17:58,850 --> 00:17:58,860
right as I explained in the last lecture
 

839
00:17:58,860 --> 00:18:00,920
right as I explained in the last lecture
I'm going to use xamarin studio in this

840
00:18:00,920 --> 00:18:00,930
I'm going to use xamarin studio in this
 

841
00:18:00,930 --> 00:18:03,140
I'm going to use xamarin studio in this
course to doing my development if you

842
00:18:03,140 --> 00:18:03,150
course to doing my development if you
 

843
00:18:03,150 --> 00:18:04,340
course to doing my development if you
want to use Visual Studio that's

844
00:18:04,340 --> 00:18:04,350
want to use Visual Studio that's
 

845
00:18:04,350 --> 00:18:06,500
want to use Visual Studio that's
perfectly fine all the code I'm going to

846
00:18:06,500 --> 00:18:06,510
perfectly fine all the code I'm going to
 

847
00:18:06,510 --> 00:18:09,410
perfectly fine all the code I'm going to
write is exactly the same so as I told

848
00:18:09,410 --> 00:18:09,420
write is exactly the same so as I told
 

849
00:18:09,420 --> 00:18:10,100
write is exactly the same so as I told
you earlier

850
00:18:10,100 --> 00:18:10,110
you earlier
 

851
00:18:10,110 --> 00:18:12,980
you earlier
in summary in forms we use samo which is

852
00:18:12,980 --> 00:18:12,990
in summary in forms we use samo which is
 

853
00:18:12,990 --> 00:18:15,170
in summary in forms we use samo which is
an xml-based language

854
00:18:15,170 --> 00:18:15,180
an xml-based language
 

855
00:18:15,180 --> 00:18:17,240
an xml-based language
define the visual appearance of our app

856
00:18:17,240 --> 00:18:17,250
define the visual appearance of our app
 

857
00:18:17,250 --> 00:18:20,360
define the visual appearance of our app
and we use code behind to implement how

858
00:18:20,360 --> 00:18:20,370
and we use code behind to implement how
 

859
00:18:20,370 --> 00:18:23,840
and we use code behind to implement how
the user interface behaves so I'm going

860
00:18:23,840 --> 00:18:23,850
the user interface behaves so I'm going
 

861
00:18:23,850 --> 00:18:25,400
the user interface behaves so I'm going
to right click our portable class

862
00:18:25,400 --> 00:18:25,410
to right click our portable class
 

863
00:18:25,410 --> 00:18:32,660
to right click our portable class
library and add a new file on the left

864
00:18:32,660 --> 00:18:32,670
library and add a new file on the left
 

865
00:18:32,670 --> 00:18:35,240
library and add a new file on the left
side select forms and on the right side

866
00:18:35,240 --> 00:18:35,250
side select forms and on the right side
 

867
00:18:35,250 --> 00:18:37,820
side select forms and on the right side
select forms content page

868
00:18:37,820 --> 00:18:37,830
select forms content page
 

869
00:18:37,830 --> 00:18:41,330
select forms content page
samo and now we give this a name greet

870
00:18:41,330 --> 00:18:41,340
samo and now we give this a name greet
 

871
00:18:41,340 --> 00:18:48,140
samo and now we give this a name greet
page if you're using Visual Studio again

872
00:18:48,140 --> 00:18:48,150
page if you're using Visual Studio again
 

873
00:18:48,150 --> 00:18:50,180
page if you're using Visual Studio again
right click the portable class library

874
00:18:50,180 --> 00:18:50,190
right click the portable class library
 

875
00:18:50,190 --> 00:18:57,260
right click the portable class library
add a new item in the list of templates

876
00:18:57,260 --> 00:18:57,270
add a new item in the list of templates
 

877
00:18:57,270 --> 00:19:00,680
add a new item in the list of templates
select cross-platform and here select

878
00:19:00,680 --> 00:19:00,690
select cross-platform and here select
 

879
00:19:00,690 --> 00:19:08,830
select cross-platform and here select
forms zamel page and call it greet page

880
00:19:08,830 --> 00:19:08,840

 

881
00:19:08,840 --> 00:19:11,180

so this will add two new files to our

882
00:19:11,180 --> 00:19:11,190
so this will add two new files to our
 

883
00:19:11,190 --> 00:19:14,320
so this will add two new files to our
project one is greet page that's ammo

884
00:19:14,320 --> 00:19:14,330
project one is greet page that's ammo
 

885
00:19:14,330 --> 00:19:17,300
project one is greet page that's ammo
and if you expand it here's the code

886
00:19:17,300 --> 00:19:17,310
and if you expand it here's the code
 

887
00:19:17,310 --> 00:19:20,330
and if you expand it here's the code
behind which is just a simple c-sharp

888
00:19:20,330 --> 00:19:20,340
behind which is just a simple c-sharp
 

889
00:19:20,340 --> 00:19:23,780
behind which is just a simple c-sharp
class and we have the same scenario in

890
00:19:23,780 --> 00:19:23,790
class and we have the same scenario in
 

891
00:19:23,790 --> 00:19:26,270
class and we have the same scenario in
xamarin studio so here's our code behind

892
00:19:26,270 --> 00:19:26,280
xamarin studio so here's our code behind
 

893
00:19:26,280 --> 00:19:30,230
xamarin studio so here's our code behind
and here's our sam'l file as you can see

894
00:19:30,230 --> 00:19:30,240
and here's our sam'l file as you can see
 

895
00:19:30,240 --> 00:19:33,230
and here's our sam'l file as you can see
sam'l is based on XML the root element

896
00:19:33,230 --> 00:19:33,240
sam'l is based on XML the root element
 

897
00:19:33,240 --> 00:19:36,170
sam'l is based on XML the root element
here content page represents the type of

898
00:19:36,170 --> 00:19:36,180
here content page represents the type of
 

899
00:19:36,180 --> 00:19:39,140
here content page represents the type of
our page in xamarin forms we have a few

900
00:19:39,140 --> 00:19:39,150
our page in xamarin forms we have a few
 

901
00:19:39,150 --> 00:19:42,110
our page in xamarin forms we have a few
page types we have content page master

902
00:19:42,110 --> 00:19:42,120
page types we have content page master
 

903
00:19:42,120 --> 00:19:44,840
page types we have content page master
detail page navigation page carousel

904
00:19:44,840 --> 00:19:44,850
detail page navigation page carousel
 

905
00:19:44,850 --> 00:19:47,870
detail page navigation page carousel
page and so on we use content page to

906
00:19:47,870 --> 00:19:47,880
page and so on we use content page to
 

907
00:19:47,880 --> 00:19:50,480
page and so on we use content page to
present some content to the user whether

908
00:19:50,480 --> 00:19:50,490
present some content to the user whether
 

909
00:19:50,490 --> 00:19:52,820
present some content to the user whether
that being text images or the

910
00:19:52,820 --> 00:19:52,830
that being text images or the
 

911
00:19:52,830 --> 00:19:55,310
that being text images or the
combination of the two now let me break

912
00:19:55,310 --> 00:19:55,320
combination of the two now let me break
 

913
00:19:55,320 --> 00:19:57,370
combination of the two now let me break
up this line so you can see more clearly

914
00:19:57,370 --> 00:19:57,380
up this line so you can see more clearly
 

915
00:19:57,380 --> 00:20:01,220
up this line so you can see more clearly
in our content page element we have a

916
00:20:01,220 --> 00:20:01,230
in our content page element we have a
 

917
00:20:01,230 --> 00:20:04,060
in our content page element we have a
couple of XML namespace declarations the

918
00:20:04,060 --> 00:20:04,070
couple of XML namespace declarations the
 

919
00:20:04,070 --> 00:20:07,340
couple of XML namespace declarations the
first one is owned by xamarin and this

920
00:20:07,340 --> 00:20:07,350
first one is owned by xamarin and this
 

921
00:20:07,350 --> 00:20:09,770
first one is owned by xamarin and this
namespace is for elements that have no

922
00:20:09,770 --> 00:20:09,780
namespace is for elements that have no
 

923
00:20:09,780 --> 00:20:13,730
namespace is for elements that have no
prefix like this content page element so

924
00:20:13,730 --> 00:20:13,740
prefix like this content page element so
 

925
00:20:13,740 --> 00:20:15,920
prefix like this content page element so
this element belongs to xamarin to

926
00:20:15,920 --> 00:20:15,930
this element belongs to xamarin to
 

927
00:20:15,930 --> 00:20:18,680
this element belongs to xamarin to
xamarin forms we have another namespace

928
00:20:18,680 --> 00:20:18,690
xamarin forms we have another namespace
 

929
00:20:18,690 --> 00:20:22,160
xamarin forms we have another namespace
declaration which identifies a prefix so

930
00:20:22,160 --> 00:20:22,170
declaration which identifies a prefix so
 

931
00:20:22,170 --> 00:20:25,430
declaration which identifies a prefix so
this : x syntax is used to declare a

932
00:20:25,430 --> 00:20:25,440
this : x syntax is used to declare a
 

933
00:20:25,440 --> 00:20:27,590
this : x syntax is used to declare a
prefix and if you look at the URI

934
00:20:27,590 --> 00:20:27,600
prefix and if you look at the URI
 

935
00:20:27,600 --> 00:20:28,970
prefix and if you look at the URI
assigned to this XML

936
00:20:28,970 --> 00:20:28,980
assigned to this XML
 

937
00:20:28,980 --> 00:20:30,770
assigned to this XML
namespace you can see that this

938
00:20:30,770 --> 00:20:30,780
namespace you can see that this
 

939
00:20:30,780 --> 00:20:33,169
namespace you can see that this
namespace is owned by Microsoft which

940
00:20:33,169 --> 00:20:33,179
namespace is owned by Microsoft which
 

941
00:20:33,179 --> 00:20:35,270
namespace is owned by Microsoft which
represents the standards mo that

942
00:20:35,270 --> 00:20:35,280
represents the standards mo that
 

943
00:20:35,280 --> 00:20:38,450
represents the standards mo that
Microsoft introduced in year 2009 now

944
00:20:38,450 --> 00:20:38,460
Microsoft introduced in year 2009 now
 

945
00:20:38,460 --> 00:20:41,240
Microsoft introduced in year 2009 now
what is this : X here that means any

946
00:20:41,240 --> 00:20:41,250
what is this : X here that means any
 

947
00:20:41,250 --> 00:20:43,490
what is this : X here that means any
elements or any attribute that is

948
00:20:43,490 --> 00:20:43,500
elements or any attribute that is
 

949
00:20:43,500 --> 00:20:46,520
elements or any attribute that is
prefixed with an X belongs to this

950
00:20:46,520 --> 00:20:46,530
prefixed with an X belongs to this
 

951
00:20:46,530 --> 00:20:49,610
prefixed with an X belongs to this
namespace look at this attribute the

952
00:20:49,610 --> 00:20:49,620
namespace look at this attribute the
 

953
00:20:49,620 --> 00:20:52,310
namespace look at this attribute the
class attribute it's prefixed with an X

954
00:20:52,310 --> 00:20:52,320
class attribute it's prefixed with an X
 

955
00:20:52,320 --> 00:20:55,520
class attribute it's prefixed with an X
and we call it X class so this attribute

956
00:20:55,520 --> 00:20:55,530
and we call it X class so this attribute
 

957
00:20:55,530 --> 00:20:58,400
and we call it X class so this attribute
belongs to the Microsoft namespace now

958
00:20:58,400 --> 00:20:58,410
belongs to the Microsoft namespace now
 

959
00:20:58,410 --> 00:20:59,690
belongs to the Microsoft namespace now
look at the value assigned to this

960
00:20:59,690 --> 00:20:59,700
look at the value assigned to this
 

961
00:20:59,700 --> 00:21:02,659
look at the value assigned to this
attribute it's hello world that greet

962
00:21:02,659 --> 00:21:02,669
attribute it's hello world that greet
 

963
00:21:02,669 --> 00:21:05,090
attribute it's hello world that greet
page which is the fully qualified name

964
00:21:05,090 --> 00:21:05,100
page which is the fully qualified name
 

965
00:21:05,100 --> 00:21:08,510
page which is the fully qualified name
of our code-behind class so if we switch

966
00:21:08,510 --> 00:21:08,520
of our code-behind class so if we switch
 

967
00:21:08,520 --> 00:21:10,880
of our code-behind class so if we switch
to the other tab look the name of our

968
00:21:10,880 --> 00:21:10,890
to the other tab look the name of our
 

969
00:21:10,890 --> 00:21:13,460
to the other tab look the name of our
class is greet page and it's placed in

970
00:21:13,460 --> 00:21:13,470
class is greet page and it's placed in
 

971
00:21:13,470 --> 00:21:17,060
class is greet page and it's placed in
hello world namespace so using X class

972
00:21:17,060 --> 00:21:17,070
hello world namespace so using X class
 

973
00:21:17,070 --> 00:21:18,860
hello world namespace so using X class
attribute we establish a link between

974
00:21:18,860 --> 00:21:18,870
attribute we establish a link between
 

975
00:21:18,870 --> 00:21:21,549
attribute we establish a link between
the sam'l file and the code-behind file

976
00:21:21,549 --> 00:21:21,559
the sam'l file and the code-behind file
 

977
00:21:21,559 --> 00:21:24,650
the sam'l file and the code-behind file
now remove the content of this content

978
00:21:24,650 --> 00:21:24,660
now remove the content of this content
 

979
00:21:24,660 --> 00:21:28,039
now remove the content of this content
page element and instead let's add a

980
00:21:28,039 --> 00:21:28,049
page element and instead let's add a
 

981
00:21:28,049 --> 00:21:32,960
page element and instead let's add a
button so button I want to put this

982
00:21:32,960 --> 00:21:32,970
button so button I want to put this
 

983
00:21:32,970 --> 00:21:35,570
button so button I want to put this
button in the middle of the screen so we

984
00:21:35,570 --> 00:21:35,580
button in the middle of the screen so we
 

985
00:21:35,580 --> 00:21:38,919
button in the middle of the screen so we
set horizontal options to Center and

986
00:21:38,919 --> 00:21:38,929
set horizontal options to Center and
 

987
00:21:38,929 --> 00:21:44,870
set horizontal options to Center and
vertical options to Center next we set

988
00:21:44,870 --> 00:21:44,880
vertical options to Center next we set
 

989
00:21:44,880 --> 00:21:49,400
vertical options to Center next we set
the text attribute click me so this way

990
00:21:49,400 --> 00:21:49,410
the text attribute click me so this way
 

991
00:21:49,410 --> 00:21:51,110
the text attribute click me so this way
we zamel we are defining the visual

992
00:21:51,110 --> 00:21:51,120
we zamel we are defining the visual
 

993
00:21:51,120 --> 00:21:53,270
we zamel we are defining the visual
appearance of our page now what about

994
00:21:53,270 --> 00:21:53,280
appearance of our page now what about
 

995
00:21:53,280 --> 00:21:55,730
appearance of our page now what about
the behavior when we click this button I

996
00:21:55,730 --> 00:21:55,740
the behavior when we click this button I
 

997
00:21:55,740 --> 00:21:58,400
the behavior when we click this button I
want to display an alert in xamarin

998
00:21:58,400 --> 00:21:58,410
want to display an alert in xamarin
 

999
00:21:58,410 --> 00:22:00,860
want to display an alert in xamarin
forms buttons have an event called

1000
00:22:00,860 --> 00:22:00,870
forms buttons have an event called
 

1001
00:22:00,870 --> 00:22:05,840
forms buttons have an event called
clicked so we set clicked to a string

1002
00:22:05,840 --> 00:22:05,850
clicked so we set clicked to a string
 

1003
00:22:05,850 --> 00:22:08,299
clicked so we set clicked to a string
and this identifies the name of the

1004
00:22:08,299 --> 00:22:08,309
and this identifies the name of the
 

1005
00:22:08,309 --> 00:22:10,520
and this identifies the name of the
method in the code behind that should be

1006
00:22:10,520 --> 00:22:10,530
method in the code behind that should be
 

1007
00:22:10,530 --> 00:22:13,430
method in the code behind that should be
called when this event is raised you can

1008
00:22:13,430 --> 00:22:13,440
called when this event is raised you can
 

1009
00:22:13,440 --> 00:22:15,080
called when this event is raised you can
see they are in studio or Visual Studio

1010
00:22:15,080 --> 00:22:15,090
see they are in studio or Visual Studio
 

1011
00:22:15,090 --> 00:22:17,350
see they are in studio or Visual Studio
is suggesting a name for this method

1012
00:22:17,350 --> 00:22:17,360
is suggesting a name for this method
 

1013
00:22:17,360 --> 00:22:20,510
is suggesting a name for this method
handle underline clicked so we press

1014
00:22:20,510 --> 00:22:20,520
handle underline clicked so we press
 

1015
00:22:20,520 --> 00:22:23,230
handle underline clicked so we press
Enter that brings us to the code behind

1016
00:22:23,230 --> 00:22:23,240
Enter that brings us to the code behind
 

1017
00:22:23,240 --> 00:22:26,510
Enter that brings us to the code behind
press ENTER again and that generates our

1018
00:22:26,510 --> 00:22:26,520
press ENTER again and that generates our
 

1019
00:22:26,520 --> 00:22:29,780
press ENTER again and that generates our
event handler so this event handler as

1020
00:22:29,780 --> 00:22:29,790
event handler so this event handler as
 

1021
00:22:29,790 --> 00:22:31,490
event handler so this event handler as
you see it's a private method because it

1022
00:22:31,490 --> 00:22:31,500
you see it's a private method because it
 

1023
00:22:31,500 --> 00:22:33,080
you see it's a private method because it
doesn't have an access modifier like

1024
00:22:33,080 --> 00:22:33,090
doesn't have an access modifier like
 

1025
00:22:33,090 --> 00:22:36,320
doesn't have an access modifier like
public it has two arguments one is an

1026
00:22:36,320 --> 00:22:36,330
public it has two arguments one is an
 

1027
00:22:36,330 --> 00:22:38,419
public it has two arguments one is an
object which is the sender or source of

1028
00:22:38,419 --> 00:22:38,429
object which is the sender or source of
 

1029
00:22:38,429 --> 00:22:40,640
object which is the sender or source of
the event and the second one is event

1030
00:22:40,640 --> 00:22:40,650
the event and the second one is event
 

1031
00:22:40,650 --> 00:22:42,680
the event and the second one is event
args which brings additional

1032
00:22:42,680 --> 00:22:42,690
args which brings additional
 

1033
00:22:42,690 --> 00:22:45,230
args which brings additional
tales about an event if this method

1034
00:22:45,230 --> 00:22:45,240
tales about an event if this method
 

1035
00:22:45,240 --> 00:22:47,510
tales about an event if this method
looks strange or unfamiliar to you I

1036
00:22:47,510 --> 00:22:47,520
looks strange or unfamiliar to you I
 

1037
00:22:47,520 --> 00:22:49,520
looks strange or unfamiliar to you I
highly recommend you to watch my c-sharp

1038
00:22:49,520 --> 00:22:49,530
highly recommend you to watch my c-sharp
 

1039
00:22:49,530 --> 00:22:51,470
highly recommend you to watch my c-sharp
advanced course because there I have a

1040
00:22:51,470 --> 00:22:51,480
advanced course because there I have a
 

1041
00:22:51,480 --> 00:22:53,950
advanced course because there I have a
complete lecture on events and handlers

1042
00:22:53,950 --> 00:22:53,960
complete lecture on events and handlers
 

1043
00:22:53,960 --> 00:22:56,030
complete lecture on events and handlers
now I want to change the implementation

1044
00:22:56,030 --> 00:22:56,040
now I want to change the implementation
 

1045
00:22:56,040 --> 00:23:00,140
now I want to change the implementation
of this method to display an alert we

1046
00:23:00,140 --> 00:23:00,150
of this method to display an alert we
 

1047
00:23:00,150 --> 00:23:03,560
of this method to display an alert we
call display alert method we inherit

1048
00:23:03,560 --> 00:23:03,570
call display alert method we inherit
 

1049
00:23:03,570 --> 00:23:05,600
call display alert method we inherit
this method from content page class

1050
00:23:05,600 --> 00:23:05,610
this method from content page class
 

1051
00:23:05,610 --> 00:23:07,550
this method from content page class
which is the base class for our greet

1052
00:23:07,550 --> 00:23:07,560
which is the base class for our greet
 

1053
00:23:07,560 --> 00:23:11,330
which is the base class for our greet
page so the arguments will supply here

1054
00:23:11,330 --> 00:23:11,340
page so the arguments will supply here
 

1055
00:23:11,340 --> 00:23:15,230
page so the arguments will supply here
is the title of the dialog box the

1056
00:23:15,230 --> 00:23:15,240
is the title of the dialog box the
 

1057
00:23:15,240 --> 00:23:17,030
is the title of the dialog box the
message we want to display like hello

1058
00:23:17,030 --> 00:23:17,040
message we want to display like hello
 

1059
00:23:17,040 --> 00:23:20,930
message we want to display like hello
world and then label for the cancel

1060
00:23:20,930 --> 00:23:20,940
world and then label for the cancel
 

1061
00:23:20,940 --> 00:23:24,430
world and then label for the cancel
button let's just call this okay

1062
00:23:24,430 --> 00:23:24,440
button let's just call this okay
 

1063
00:23:24,440 --> 00:23:26,510
button let's just call this okay
potentially we could supply another

1064
00:23:26,510 --> 00:23:26,520
potentially we could supply another
 

1065
00:23:26,520 --> 00:23:28,310
potentially we could supply another
argument if you want to have two buttons

1066
00:23:28,310 --> 00:23:28,320
argument if you want to have two buttons
 

1067
00:23:28,320 --> 00:23:32,600
argument if you want to have two buttons
like okay and cancel or yes and no but

1068
00:23:32,600 --> 00:23:32,610
like okay and cancel or yes and no but
 

1069
00:23:32,610 --> 00:23:33,890
like okay and cancel or yes and no but
for this video we don't have to worry

1070
00:23:33,890 --> 00:23:33,900
for this video we don't have to worry
 

1071
00:23:33,900 --> 00:23:37,220
for this video we don't have to worry
about it now in terms of clean coding we

1072
00:23:37,220 --> 00:23:37,230
about it now in terms of clean coding we
 

1073
00:23:37,230 --> 00:23:38,510
about it now in terms of clean coding we
should keep the constructor of our

1074
00:23:38,510 --> 00:23:38,520
should keep the constructor of our
 

1075
00:23:38,520 --> 00:23:40,550
should keep the constructor of our
classes on the top so I want to move

1076
00:23:40,550 --> 00:23:40,560
classes on the top so I want to move
 

1077
00:23:40,560 --> 00:23:45,620
classes on the top so I want to move
this method down

1078
00:23:45,620 --> 00:23:45,630

 

1079
00:23:45,630 --> 00:23:48,390

okay we are done with this new page now

1080
00:23:48,390 --> 00:23:48,400
okay we are done with this new page now
 

1081
00:23:48,400 --> 00:23:49,800
okay we are done with this new page now
we want to make sure that this page is

1082
00:23:49,800 --> 00:23:49,810
we want to make sure that this page is
 

1083
00:23:49,810 --> 00:23:53,250
we want to make sure that this page is
displayed when our app is started so

1084
00:23:53,250 --> 00:23:53,260
displayed when our app is started so
 

1085
00:23:53,260 --> 00:23:56,070
displayed when our app is started so
back to our solution view in the

1086
00:23:56,070 --> 00:23:56,080
back to our solution view in the
 

1087
00:23:56,080 --> 00:23:58,440
back to our solution view in the
portable class library you see we have a

1088
00:23:58,440 --> 00:23:58,450
portable class library you see we have a
 

1089
00:23:58,450 --> 00:24:01,920
portable class library you see we have a
file called apt sam'l let's expand this

1090
00:24:01,920 --> 00:24:01,930
file called apt sam'l let's expand this
 

1091
00:24:01,930 --> 00:24:06,270
file called apt sam'l let's expand this
here's our code behind you can see here

1092
00:24:06,270 --> 00:24:06,280
here's our code behind you can see here
 

1093
00:24:06,280 --> 00:24:08,280
here's our code behind you can see here
main page property is set to a new

1094
00:24:08,280 --> 00:24:08,290
main page property is set to a new
 

1095
00:24:08,290 --> 00:24:11,100
main page property is set to a new
instance of hello world page main page

1096
00:24:11,100 --> 00:24:11,110
instance of hello world page main page
 

1097
00:24:11,110 --> 00:24:13,560
instance of hello world page main page
is a property that is defined in the

1098
00:24:13,560 --> 00:24:13,570
is a property that is defined in the
 

1099
00:24:13,570 --> 00:24:17,070
is a property that is defined in the
basin class and we use that to set the

1100
00:24:17,070 --> 00:24:17,080
basin class and we use that to set the
 

1101
00:24:17,080 --> 00:24:20,700
basin class and we use that to set the
starting page of our application so I'm

1102
00:24:20,700 --> 00:24:20,710
starting page of our application so I'm
 

1103
00:24:20,710 --> 00:24:24,470
starting page of our application so I'm
going to change this to new greet page

1104
00:24:24,470 --> 00:24:24,480
going to change this to new greet page
 

1105
00:24:24,480 --> 00:24:27,510
going to change this to new greet page
now let's run this enzyme rain studio

1106
00:24:27,510 --> 00:24:27,520
now let's run this enzyme rain studio
 

1107
00:24:27,520 --> 00:24:29,640
now let's run this enzyme rain studio
I'm going to press command alt and enter

1108
00:24:29,640 --> 00:24:29,650
I'm going to press command alt and enter
 

1109
00:24:29,650 --> 00:24:33,450
I'm going to press command alt and enter
in Visual Studio you press ctrl + f5 but

1110
00:24:33,450 --> 00:24:33,460
in Visual Studio you press ctrl + f5 but
 

1111
00:24:33,460 --> 00:24:35,700
in Visual Studio you press ctrl + f5 but
before doing so make sure in the

1112
00:24:35,700 --> 00:24:35,710
before doing so make sure in the
 

1113
00:24:35,710 --> 00:24:37,800
before doing so make sure in the
solution Explorer set one of these

1114
00:24:37,800 --> 00:24:37,810
solution Explorer set one of these
 

1115
00:24:37,810 --> 00:24:39,900
solution Explorer set one of these
platform-specific projects as the

1116
00:24:39,900 --> 00:24:39,910
platform-specific projects as the
 

1117
00:24:39,910 --> 00:24:42,240
platform-specific projects as the
startup project I'm going to use iOS you

1118
00:24:42,240 --> 00:24:42,250
startup project I'm going to use iOS you
 

1119
00:24:42,250 --> 00:24:44,550
startup project I'm going to use iOS you
can use whatever you want so let's run

1120
00:24:44,550 --> 00:24:44,560
can use whatever you want so let's run
 

1121
00:24:44,560 --> 00:24:50,680
can use whatever you want so let's run
the application okay here's our bun

1122
00:24:50,680 --> 00:24:50,690
the application okay here's our bun
 

1123
00:24:50,690 --> 00:24:52,839
the application okay here's our bun
so now you have an idea of what it's

1124
00:24:52,839 --> 00:24:52,849
so now you have an idea of what it's
 

1125
00:24:52,849 --> 00:24:55,060
so now you have an idea of what it's
like to build cross-platform apps using

1126
00:24:55,060 --> 00:24:55,070
like to build cross-platform apps using
 

1127
00:24:55,070 --> 00:24:58,270
like to build cross-platform apps using
xamarin forms

1128
00:24:58,270 --> 00:24:58,280

 

1129
00:24:58,280 --> 00:25:01,160

so you have seen Dameron forms in action

1130
00:25:01,160 --> 00:25:01,170
so you have seen Dameron forms in action
 

1131
00:25:01,170 --> 00:25:03,650
so you have seen Dameron forms in action
and you know that with xamarin forms you

1132
00:25:03,650 --> 00:25:03,660
and you know that with xamarin forms you
 

1133
00:25:03,660 --> 00:25:05,480
and you know that with xamarin forms you
can build native apps for different

1134
00:25:05,480 --> 00:25:05,490
can build native apps for different
 

1135
00:25:05,490 --> 00:25:08,330
can build native apps for different
platforms but you might be curious how's

1136
00:25:08,330 --> 00:25:08,340
platforms but you might be curious how's
 

1137
00:25:08,340 --> 00:25:11,090
platforms but you might be curious how's
a Marine actually achieves this so let

1138
00:25:11,090 --> 00:25:11,100
a Marine actually achieves this so let
 

1139
00:25:11,100 --> 00:25:12,760
a Marine actually achieves this so let
me give you a bit of background

1140
00:25:12,760 --> 00:25:12,770
me give you a bit of background
 

1141
00:25:12,770 --> 00:25:15,380
me give you a bit of background
alzheimer in products like samurai on

1142
00:25:15,380 --> 00:25:15,390
alzheimer in products like samurai on
 

1143
00:25:15,390 --> 00:25:18,560
alzheimer in products like samurai on
android xamarin that iOS examining forms

1144
00:25:18,560 --> 00:25:18,570
android xamarin that iOS examining forms
 

1145
00:25:18,570 --> 00:25:21,500
android xamarin that iOS examining forms
are built on top of mano which is an

1146
00:25:21,500 --> 00:25:21,510
are built on top of mano which is an
 

1147
00:25:21,510 --> 00:25:24,320
are built on top of mano which is an
open-source version of.net that runs on

1148
00:25:24,320 --> 00:25:24,330
open-source version of.net that runs on
 

1149
00:25:24,330 --> 00:25:27,200
open-source version of.net that runs on
various non Windows platforms like Linux

1150
00:25:27,200 --> 00:25:27,210
various non Windows platforms like Linux
 

1151
00:25:27,210 --> 00:25:31,040
various non Windows platforms like Linux
UNIX and OSX mono is a project that has

1152
00:25:31,040 --> 00:25:31,050
UNIX and OSX mono is a project that has
 

1153
00:25:31,050 --> 00:25:32,990
UNIX and OSX mono is a project that has
been around since pretty much as long as

1154
00:25:32,990 --> 00:25:33,000
been around since pretty much as long as
 

1155
00:25:33,000 --> 00:25:35,360
been around since pretty much as long as
dotnet itself but it wasn't very popular

1156
00:25:35,360 --> 00:25:35,370
dotnet itself but it wasn't very popular
 

1157
00:25:35,370 --> 00:25:39,080
dotnet itself but it wasn't very popular
until recent years in the mana world we

1158
00:25:39,080 --> 00:25:39,090
until recent years in the mana world we
 

1159
00:25:39,090 --> 00:25:41,870
until recent years in the mana world we
had two releases one was called mana for

1160
00:25:41,870 --> 00:25:41,880
had two releases one was called mana for
 

1161
00:25:41,880 --> 00:25:43,910
had two releases one was called mana for
Android which was later renamed to

1162
00:25:43,910 --> 00:25:43,920
Android which was later renamed to
 

1163
00:25:43,920 --> 00:25:46,190
Android which was later renamed to
xamarin that Android and the other

1164
00:25:46,190 --> 00:25:46,200
xamarin that Android and the other
 

1165
00:25:46,200 --> 00:25:48,770
xamarin that Android and the other
release was mono touch which is now what

1166
00:25:48,770 --> 00:25:48,780
release was mono touch which is now what
 

1167
00:25:48,780 --> 00:25:52,730
release was mono touch which is now what
we call xamarin iOS both these libraries

1168
00:25:52,730 --> 00:25:52,740
we call xamarin iOS both these libraries
 

1169
00:25:52,740 --> 00:25:55,220
we call xamarin iOS both these libraries
give you access to the dotnet base class

1170
00:25:55,220 --> 00:25:55,230
give you access to the dotnet base class
 

1171
00:25:55,230 --> 00:25:58,040
give you access to the dotnet base class
library so you have the same namespaces

1172
00:25:58,040 --> 00:25:58,050
library so you have the same namespaces
 

1173
00:25:58,050 --> 00:26:00,140
library so you have the same namespaces
you are familiar with you got the same

1174
00:26:00,140 --> 00:26:00,150
you are familiar with you got the same
 

1175
00:26:00,150 --> 00:26:02,630
you are familiar with you got the same
classes with the same interfaces but

1176
00:26:02,630 --> 00:26:02,640
classes with the same interfaces but
 

1177
00:26:02,640 --> 00:26:05,419
classes with the same interfaces but
they also give you access to the native

1178
00:26:05,419 --> 00:26:05,429
they also give you access to the native
 

1179
00:26:05,429 --> 00:26:08,660
they also give you access to the native
API on their platform so you have access

1180
00:26:08,660 --> 00:26:08,670
API on their platform so you have access
 

1181
00:26:08,670 --> 00:26:10,820
API on their platform so you have access
to additional assemblies and namespaces

1182
00:26:10,820 --> 00:26:10,830
to additional assemblies and namespaces
 

1183
00:26:10,830 --> 00:26:13,669
to additional assemblies and namespaces
that mimic the ones that come natively

1184
00:26:13,669 --> 00:26:13,679
that mimic the ones that come natively
 

1185
00:26:13,679 --> 00:26:16,820
that mimic the ones that come natively
with Android and iOS these are the

1186
00:26:16,820 --> 00:26:16,830
with Android and iOS these are the
 

1187
00:26:16,830 --> 00:26:19,160
with Android and iOS these are the
classes that Objective C or Java

1188
00:26:19,160 --> 00:26:19,170
classes that Objective C or Java
 

1189
00:26:19,170 --> 00:26:21,230
classes that Objective C or Java
developers work with when they build

1190
00:26:21,230 --> 00:26:21,240
developers work with when they build
 

1191
00:26:21,240 --> 00:26:23,590
developers work with when they build
native apps for Android and iOS

1192
00:26:23,590 --> 00:26:23,600
native apps for Android and iOS
 

1193
00:26:23,600 --> 00:26:26,120
native apps for Android and iOS
when using xamarin that Android or

1194
00:26:26,120 --> 00:26:26,130
when using xamarin that Android or
 

1195
00:26:26,130 --> 00:26:28,370
when using xamarin that Android or
examined on iOS we work with these

1196
00:26:28,370 --> 00:26:28,380
examined on iOS we work with these
 

1197
00:26:28,380 --> 00:26:30,860
examined on iOS we work with these
classes just like standard Seashore

1198
00:26:30,860 --> 00:26:30,870
classes just like standard Seashore
 

1199
00:26:30,870 --> 00:26:33,710
classes just like standard Seashore
classes in dotnet and these libraries

1200
00:26:33,710 --> 00:26:33,720
classes in dotnet and these libraries
 

1201
00:26:33,720 --> 00:26:36,590
classes in dotnet and these libraries
will internally call the corresponding

1202
00:26:36,590 --> 00:26:36,600
will internally call the corresponding
 

1203
00:26:36,600 --> 00:26:39,650
will internally call the corresponding
API on the target platform now how that

1204
00:26:39,650 --> 00:26:39,660
API on the target platform now how that
 

1205
00:26:39,660 --> 00:26:42,169
API on the target platform now how that
happens it's pretty complex and it's not

1206
00:26:42,169 --> 00:26:42,179
happens it's pretty complex and it's not
 

1207
00:26:42,179 --> 00:26:44,060
happens it's pretty complex and it's not
something we need to worry about that's

1208
00:26:44,060 --> 00:26:44,070
something we need to worry about that's
 

1209
00:26:44,070 --> 00:26:45,860
something we need to worry about that's
something that developers at xamarin

1210
00:26:45,860 --> 00:26:45,870
something that developers at xamarin
 

1211
00:26:45,870 --> 00:26:48,530
something that developers at xamarin
have to deal with now that you have an

1212
00:26:48,530 --> 00:26:48,540
have to deal with now that you have an
 

1213
00:26:48,540 --> 00:26:50,240
have to deal with now that you have an
understanding of xamarin that Android

1214
00:26:50,240 --> 00:26:50,250
understanding of xamarin that Android
 

1215
00:26:50,250 --> 00:26:52,520
understanding of xamarin that Android
and stammering that iOS let's get a

1216
00:26:52,520 --> 00:26:52,530
and stammering that iOS let's get a
 

1217
00:26:52,530 --> 00:26:55,490
and stammering that iOS let's get a
little bit more specific here when you

1218
00:26:55,490 --> 00:26:55,500
little bit more specific here when you
 

1219
00:26:55,500 --> 00:26:56,930
little bit more specific here when you
build an application with xamarin

1220
00:26:56,930 --> 00:26:56,940
build an application with xamarin
 

1221
00:26:56,940 --> 00:27:00,260
build an application with xamarin
Android xamarin sushar compiler compiles

1222
00:27:00,260 --> 00:27:00,270
Android xamarin sushar compiler compiles
 

1223
00:27:00,270 --> 00:27:02,960
Android xamarin sushar compiler compiles
down your c-sharp code to intermediate

1224
00:27:02,960 --> 00:27:02,970
down your c-sharp code to intermediate
 

1225
00:27:02,970 --> 00:27:07,220
down your c-sharp code to intermediate
language or IL it also emits the mono

1226
00:27:07,220 --> 00:27:07,230
language or IL it also emits the mono
 

1227
00:27:07,230 --> 00:27:09,950
language or IL it also emits the mono
runtime with your application this mono

1228
00:27:09,950 --> 00:27:09,960
runtime with your application this mono
 

1229
00:27:09,960 --> 00:27:11,899
runtime with your application this mono
runtime is similar to CLR

1230
00:27:11,899 --> 00:27:11,909
runtime is similar to CLR
 

1231
00:27:11,909 --> 00:27:12,979
runtime is similar to CLR
that you should probably be familiar

1232
00:27:12,979 --> 00:27:12,989
that you should probably be familiar
 

1233
00:27:12,989 --> 00:27:15,649
that you should probably be familiar
with so when you launch an Android app

1234
00:27:15,649 --> 00:27:15,659
with so when you launch an Android app
 

1235
00:27:15,659 --> 00:27:18,049
with so when you launch an Android app
this runtime is loaded into the memory

1236
00:27:18,049 --> 00:27:18,059
this runtime is loaded into the memory
 

1237
00:27:18,059 --> 00:27:20,689
this runtime is loaded into the memory
and then it gets your il code and

1238
00:27:20,689 --> 00:27:20,699
and then it gets your il code and
 

1239
00:27:20,699 --> 00:27:22,699
and then it gets your il code and
compile it to the native code for

1240
00:27:22,699 --> 00:27:22,709
compile it to the native code for
 

1241
00:27:22,709 --> 00:27:25,039
compile it to the native code for
Android and this process is what we call

1242
00:27:25,039 --> 00:27:25,049
Android and this process is what we call
 

1243
00:27:25,049 --> 00:27:29,029
Android and this process is what we call
just-in-time compilation or JIT this is

1244
00:27:29,029 --> 00:27:29,039
just-in-time compilation or JIT this is
 

1245
00:27:29,039 --> 00:27:31,249
just-in-time compilation or JIT this is
the same mechanism that is in place when

1246
00:27:31,249 --> 00:27:31,259
the same mechanism that is in place when
 

1247
00:27:31,259 --> 00:27:33,529
the same mechanism that is in place when
you build a regular dotnet application

1248
00:27:33,529 --> 00:27:33,539
you build a regular dotnet application
 

1249
00:27:33,539 --> 00:27:34,219
you build a regular dotnet application
with c-sharp

1250
00:27:34,219 --> 00:27:34,229
with c-sharp
 

1251
00:27:34,229 --> 00:27:37,279
with c-sharp
when you build a console desktop or web

1252
00:27:37,279 --> 00:27:37,289
when you build a console desktop or web
 

1253
00:27:37,289 --> 00:27:40,430
when you build a console desktop or web
application the same magic happens now

1254
00:27:40,430 --> 00:27:40,440
application the same magic happens now
 

1255
00:27:40,440 --> 00:27:43,639
application the same magic happens now
with iOS we have a different story Apple

1256
00:27:43,639 --> 00:27:43,649
with iOS we have a different story Apple
 

1257
00:27:43,649 --> 00:27:46,399
with iOS we have a different story Apple
does not allow cheating so when you

1258
00:27:46,399 --> 00:27:46,409
does not allow cheating so when you
 

1259
00:27:46,409 --> 00:27:49,159
does not allow cheating so when you
build your iOS application zamarons you

1260
00:27:49,159 --> 00:27:49,169
build your iOS application zamarons you
 

1261
00:27:49,169 --> 00:27:51,019
build your iOS application zamarons you
sharp compiler first compiles your

1262
00:27:51,019 --> 00:27:51,029
sharp compiler first compiles your
 

1263
00:27:51,029 --> 00:27:54,139
sharp compiler first compiles your
sushar code down to IL and then it uses

1264
00:27:54,139 --> 00:27:54,149
sushar code down to IL and then it uses
 

1265
00:27:54,149 --> 00:27:56,930
sushar code down to IL and then it uses
apple compiler to compile it to native

1266
00:27:56,930 --> 00:27:56,940
apple compiler to compile it to native
 

1267
00:27:56,940 --> 00:27:58,729
apple compiler to compile it to native
code and that's why you need an apple

1268
00:27:58,729 --> 00:27:58,739
code and that's why you need an apple
 

1269
00:27:58,739 --> 00:28:01,909
code and that's why you need an apple
machine so the output is native code

1270
00:28:01,909 --> 00:28:01,919
machine so the output is native code
 

1271
00:28:01,919 --> 00:28:04,159
machine so the output is native code
that iOS can understand and there's no

1272
00:28:04,159 --> 00:28:04,169
that iOS can understand and there's no
 

1273
00:28:04,169 --> 00:28:06,919
that iOS can understand and there's no
cheating involved here in other words

1274
00:28:06,919 --> 00:28:06,929
cheating involved here in other words
 

1275
00:28:06,929 --> 00:28:09,169
cheating involved here in other words
when you ship your application there is

1276
00:28:09,169 --> 00:28:09,179
when you ship your application there is
 

1277
00:28:09,179 --> 00:28:11,479
when you ship your application there is
no model runtime embedded in your

1278
00:28:11,479 --> 00:28:11,489
no model runtime embedded in your
 

1279
00:28:11,489 --> 00:28:15,049
no model runtime embedded in your
application so this is how xamarin on

1280
00:28:15,049 --> 00:28:15,059
application so this is how xamarin on
 

1281
00:28:15,059 --> 00:28:17,869
application so this is how xamarin on
android and xamarin that iOS work but

1282
00:28:17,869 --> 00:28:17,879
android and xamarin that iOS work but
 

1283
00:28:17,879 --> 00:28:20,629
android and xamarin that iOS work but
what about xamarin forms well zerrin

1284
00:28:20,629 --> 00:28:20,639
what about xamarin forms well zerrin
 

1285
00:28:20,639 --> 00:28:22,819
what about xamarin forms well zerrin
forms is built on top of these two

1286
00:28:22,819 --> 00:28:22,829
forms is built on top of these two
 

1287
00:28:22,829 --> 00:28:25,430
forms is built on top of these two
libraries so we have this assembly

1288
00:28:25,430 --> 00:28:25,440
libraries so we have this assembly
 

1289
00:28:25,440 --> 00:28:28,669
libraries so we have this assembly
called xamarin dot form score and here

1290
00:28:28,669 --> 00:28:28,679
called xamarin dot form score and here
 

1291
00:28:28,679 --> 00:28:30,549
called xamarin dot form score and here
we have classes that define a common

1292
00:28:30,549 --> 00:28:30,559
we have classes that define a common
 

1293
00:28:30,559 --> 00:28:33,079
we have classes that define a common
unified API to work with different

1294
00:28:33,079 --> 00:28:33,089
unified API to work with different
 

1295
00:28:33,089 --> 00:28:35,869
unified API to work with different
platforms for example we have a class

1296
00:28:35,869 --> 00:28:35,879
platforms for example we have a class
 

1297
00:28:35,879 --> 00:28:37,879
platforms for example we have a class
called button and this is the button

1298
00:28:37,879 --> 00:28:37,889
called button and this is the button
 

1299
00:28:37,889 --> 00:28:39,949
called button and this is the button
that we reference in sam o or in code

1300
00:28:39,949 --> 00:28:39,959
that we reference in sam o or in code
 

1301
00:28:39,959 --> 00:28:42,979
that we reference in sam o or in code
behind now we have another bunch of

1302
00:28:42,979 --> 00:28:42,989
behind now we have another bunch of
 

1303
00:28:42,989 --> 00:28:44,149
behind now we have another bunch of
platform-specific

1304
00:28:44,149 --> 00:28:44,159
platform-specific
 

1305
00:28:44,159 --> 00:28:46,819
platform-specific
assemblies that map these common objects

1306
00:28:46,819 --> 00:28:46,829
assemblies that map these common objects
 

1307
00:28:46,829 --> 00:28:49,159
assemblies that map these common objects
in zaman forms to the corresponding

1308
00:28:49,159 --> 00:28:49,169
in zaman forms to the corresponding
 

1309
00:28:49,169 --> 00:28:52,849
in zaman forms to the corresponding
native equivalent let me show you so

1310
00:28:52,849 --> 00:28:52,859
native equivalent let me show you so
 

1311
00:28:52,859 --> 00:28:55,459
native equivalent let me show you so
here in this blank solution let's expand

1312
00:28:55,459 --> 00:28:55,469
here in this blank solution let's expand
 

1313
00:28:55,469 --> 00:28:58,459
here in this blank solution let's expand
this portable class library now under

1314
00:28:58,459 --> 00:28:58,469
this portable class library now under
 

1315
00:28:58,469 --> 00:29:03,459
this portable class library now under
references under front packages look

1316
00:29:03,459 --> 00:29:03,469
references under front packages look
 

1317
00:29:03,469 --> 00:29:06,649
references under front packages look
we've got xamarin that forms the core

1318
00:29:06,649 --> 00:29:06,659
we've got xamarin that forms the core
 

1319
00:29:06,659 --> 00:29:09,109
we've got xamarin that forms the core
and this is the assembly that defines

1320
00:29:09,109 --> 00:29:09,119
and this is the assembly that defines
 

1321
00:29:09,119 --> 00:29:12,049
and this is the assembly that defines
that common API that we worked with so

1322
00:29:12,049 --> 00:29:12,059
that common API that we worked with so
 

1323
00:29:12,059 --> 00:29:14,539
that common API that we worked with so
here we've got classes like bun label

1324
00:29:14,539 --> 00:29:14,549
here we've got classes like bun label
 

1325
00:29:14,549 --> 00:29:18,649
here we've got classes like bun label
list view page and so on now if you look

1326
00:29:18,649 --> 00:29:18,659
list view page and so on now if you look
 

1327
00:29:18,659 --> 00:29:21,249
list view page and so on now if you look
at one of the platform specific projects

1328
00:29:21,249 --> 00:29:21,259
at one of the platform specific projects
 

1329
00:29:21,259 --> 00:29:24,000
at one of the platform specific projects
like the Android one

1330
00:29:24,000 --> 00:29:24,010
like the Android one
 

1331
00:29:24,010 --> 00:29:28,160
like the Android one
gained under references from packages

1332
00:29:28,160 --> 00:29:28,170
gained under references from packages
 

1333
00:29:28,170 --> 00:29:31,260
gained under references from packages
now here we have an assembly called

1334
00:29:31,260 --> 00:29:31,270
now here we have an assembly called
 

1335
00:29:31,270 --> 00:29:34,320
now here we have an assembly called
xamarin that forms the platform that

1336
00:29:34,320 --> 00:29:34,330
xamarin that forms the platform that
 

1337
00:29:34,330 --> 00:29:36,690
xamarin that forms the platform that
Android and this is the assembly that is

1338
00:29:36,690 --> 00:29:36,700
Android and this is the assembly that is
 

1339
00:29:36,700 --> 00:29:39,150
Android and this is the assembly that is
responsible for mapping those common

1340
00:29:39,150 --> 00:29:39,160
responsible for mapping those common
 

1341
00:29:39,160 --> 00:29:41,250
responsible for mapping those common
controls we have in xamarin that forms

1342
00:29:41,250 --> 00:29:41,260
controls we have in xamarin that forms
 

1343
00:29:41,260 --> 00:29:43,440
controls we have in xamarin that forms
that core into their corresponding

1344
00:29:43,440 --> 00:29:43,450
that core into their corresponding
 

1345
00:29:43,450 --> 00:29:46,650
that core into their corresponding
Android equivalent and in this assembly

1346
00:29:46,650 --> 00:29:46,660
Android equivalent and in this assembly
 

1347
00:29:46,660 --> 00:29:49,160
Android equivalent and in this assembly
we have a bunch of what we call renders

1348
00:29:49,160 --> 00:29:49,170
we have a bunch of what we call renders
 

1349
00:29:49,170 --> 00:29:52,140
we have a bunch of what we call renders
so these are the classes that know how

1350
00:29:52,140 --> 00:29:52,150
so these are the classes that know how
 

1351
00:29:52,150 --> 00:29:54,750
so these are the classes that know how
to render for example a label or a

1352
00:29:54,750 --> 00:29:54,760
to render for example a label or a
 

1353
00:29:54,760 --> 00:29:57,060
to render for example a label or a
button now we have the same architecture

1354
00:29:57,060 --> 00:29:57,070
button now we have the same architecture
 

1355
00:29:57,070 --> 00:30:00,840
button now we have the same architecture
in other projects so let's expand the

1356
00:30:00,840 --> 00:30:00,850
in other projects so let's expand the
 

1357
00:30:00,850 --> 00:30:05,370
in other projects so let's expand the
iOS project references from packages now

1358
00:30:05,370 --> 00:30:05,380
iOS project references from packages now
 

1359
00:30:05,380 --> 00:30:08,100
iOS project references from packages now
look we've got xamarin that forms the

1360
00:30:08,100 --> 00:30:08,110
look we've got xamarin that forms the
 

1361
00:30:08,110 --> 00:30:11,460
look we've got xamarin that forms the
platform that iOS so this is how xamarin

1362
00:30:11,460 --> 00:30:11,470
platform that iOS so this is how xamarin
 

1363
00:30:11,470 --> 00:30:16,350
platform that iOS so this is how xamarin
forms works all right let me quickly

1364
00:30:16,350 --> 00:30:16,360
forms works all right let me quickly
 

1365
00:30:16,360 --> 00:30:18,120
forms works all right let me quickly
give you an overview of how I have

1366
00:30:18,120 --> 00:30:18,130
give you an overview of how I have
 

1367
00:30:18,130 --> 00:30:20,370
give you an overview of how I have
structured this course and where you

1368
00:30:20,370 --> 00:30:20,380
structured this course and where you
 

1369
00:30:20,380 --> 00:30:21,900
structured this course and where you
will find the content you are looking

1370
00:30:21,900 --> 00:30:21,910
will find the content you are looking
 

1371
00:30:21,910 --> 00:30:24,180
will find the content you are looking
for in the next section you're going to

1372
00:30:24,180 --> 00:30:24,190
for in the next section you're going to
 

1373
00:30:24,190 --> 00:30:27,000
for in the next section you're going to
learn the basics of Zemo and this gives

1374
00:30:27,000 --> 00:30:27,010
learn the basics of Zemo and this gives
 

1375
00:30:27,010 --> 00:30:29,160
learn the basics of Zemo and this gives
you a good foundation to progress

1376
00:30:29,160 --> 00:30:29,170
you a good foundation to progress
 

1377
00:30:29,170 --> 00:30:31,680
you a good foundation to progress
through the rest of the course next

1378
00:30:31,680 --> 00:30:31,690
through the rest of the course next
 

1379
00:30:31,690 --> 00:30:33,690
through the rest of the course next
we're going to look at layouts which we

1380
00:30:33,690 --> 00:30:33,700
we're going to look at layouts which we
 

1381
00:30:33,700 --> 00:30:35,730
we're going to look at layouts which we
use for arranging visual elements on

1382
00:30:35,730 --> 00:30:35,740
use for arranging visual elements on
 

1383
00:30:35,740 --> 00:30:38,130
use for arranging visual elements on
screen so you will learn how to build

1384
00:30:38,130 --> 00:30:38,140
screen so you will learn how to build
 

1385
00:30:38,140 --> 00:30:41,760
screen so you will learn how to build
user interfaces like these next you're

1386
00:30:41,760 --> 00:30:41,770
user interfaces like these next you're
 

1387
00:30:41,770 --> 00:30:43,950
user interfaces like these next you're
going to learn about images you will

1388
00:30:43,950 --> 00:30:43,960
going to learn about images you will
 

1389
00:30:43,960 --> 00:30:45,570
going to learn about images you will
learn about downloading images from the

1390
00:30:45,570 --> 00:30:45,580
learn about downloading images from the
 

1391
00:30:45,580 --> 00:30:47,760
learn about downloading images from the
internet or embedding them in your

1392
00:30:47,760 --> 00:30:47,770
internet or embedding them in your
 

1393
00:30:47,770 --> 00:30:49,830
internet or embedding them in your
applications you will also learn about

1394
00:30:49,830 --> 00:30:49,840
applications you will also learn about
 

1395
00:30:49,840 --> 00:30:53,220
applications you will also learn about
icons after that we're going to look at

1396
00:30:53,220 --> 00:30:53,230
icons after that we're going to look at
 

1397
00:30:53,230 --> 00:30:55,770
icons after that we're going to look at
lists so you will learn how to present

1398
00:30:55,770 --> 00:30:55,780
lists so you will learn how to present
 

1399
00:30:55,780 --> 00:30:58,940
lists so you will learn how to present
data in beautiful interactive lists

1400
00:30:58,940 --> 00:30:58,950
data in beautiful interactive lists
 

1401
00:30:58,950 --> 00:31:00,840
data in beautiful interactive lists
following that we're going to look at

1402
00:31:00,840 --> 00:31:00,850
following that we're going to look at
 

1403
00:31:00,850 --> 00:31:03,150
following that we're going to look at
navigation you will learn how to

1404
00:31:03,150 --> 00:31:03,160
navigation you will learn how to
 

1405
00:31:03,160 --> 00:31:05,330
navigation you will learn how to
navigate users from one page to another

1406
00:31:05,330 --> 00:31:05,340
navigate users from one page to another
 

1407
00:31:05,340 --> 00:31:08,730
navigate users from one page to another
how to implement master detail how to

1408
00:31:08,730 --> 00:31:08,740
how to implement master detail how to
 

1409
00:31:08,740 --> 00:31:11,370
how to implement master detail how to
implement tabs how to display pop-ups

1410
00:31:11,370 --> 00:31:11,380
implement tabs how to display pop-ups
 

1411
00:31:11,380 --> 00:31:14,340
implement tabs how to display pop-ups
and so on next you're going to learn how

1412
00:31:14,340 --> 00:31:14,350
and so on next you're going to learn how
 

1413
00:31:14,350 --> 00:31:16,800
and so on next you're going to learn how
to accept input from the user and this

1414
00:31:16,800 --> 00:31:16,810
to accept input from the user and this
 

1415
00:31:16,810 --> 00:31:18,960
to accept input from the user and this
will help you build forms and setting

1416
00:31:18,960 --> 00:31:18,970
will help you build forms and setting
 

1417
00:31:18,970 --> 00:31:21,210
will help you build forms and setting
pages but we are not going to talk about

1418
00:31:21,210 --> 00:31:21,220
pages but we are not going to talk about
 

1419
00:31:21,220 --> 00:31:23,130
pages but we are not going to talk about
saving or loading settings in this

1420
00:31:23,130 --> 00:31:23,140
saving or loading settings in this
 

1421
00:31:23,140 --> 00:31:25,470
saving or loading settings in this
section that's the topic for the

1422
00:31:25,470 --> 00:31:25,480
section that's the topic for the
 

1423
00:31:25,480 --> 00:31:27,840
section that's the topic for the
following section so in data access

1424
00:31:27,840 --> 00:31:27,850
following section so in data access
 

1425
00:31:27,850 --> 00:31:29,880
following section so in data access
section you will learn various ways you

1426
00:31:29,880 --> 00:31:29,890
section you will learn various ways you
 

1427
00:31:29,890 --> 00:31:32,490
section you will learn various ways you
can store application data you will

1428
00:31:32,490 --> 00:31:32,500
can store application data you will
 

1429
00:31:32,500 --> 00:31:34,980
can store application data you will
learn about application properties you

1430
00:31:34,980 --> 00:31:34,990
learn about application properties you
 

1431
00:31:34,990 --> 00:31:36,780
learn about application properties you
will learn about file system you'll

1432
00:31:36,780 --> 00:31:36,790
will learn about file system you'll
 

1433
00:31:36,790 --> 00:31:37,750
will learn about file system you'll
learn about

1434
00:31:37,750 --> 00:31:37,760
learn about
 

1435
00:31:37,760 --> 00:31:39,940
learn about
boring structured data in a sequel light

1436
00:31:39,940 --> 00:31:39,950
boring structured data in a sequel light
 

1437
00:31:39,950 --> 00:31:41,890
boring structured data in a sequel light
database and finally you will learn

1438
00:31:41,890 --> 00:31:41,900
database and finally you will learn
 

1439
00:31:41,900 --> 00:31:44,950
database and finally you will learn
about consuming restful services now if

1440
00:31:44,950 --> 00:31:44,960
about consuming restful services now if
 

1441
00:31:44,960 --> 00:31:46,690
about consuming restful services now if
you don't know what restful is all about

1442
00:31:46,690 --> 00:31:46,700
you don't know what restful is all about
 

1443
00:31:46,700 --> 00:31:49,060
you don't know what restful is all about
don't worry I've got some PDFs for you

1444
00:31:49,060 --> 00:31:49,070
don't worry I've got some PDFs for you
 

1445
00:31:49,070 --> 00:31:52,180
don't worry I've got some PDFs for you
so you're in good hands next we're going

1446
00:31:52,180 --> 00:31:52,190
so you're in good hands next we're going
 

1447
00:31:52,190 --> 00:31:55,120
so you're in good hands next we're going
to look at mvvm architectural pattern I

1448
00:31:55,120 --> 00:31:55,130
to look at mvvm architectural pattern I
 

1449
00:31:55,130 --> 00:31:58,780
to look at mvvm architectural pattern I
will explain what mvvm is when you

1450
00:31:58,780 --> 00:31:58,790
will explain what mvvm is when you
 

1451
00:31:58,790 --> 00:32:00,460
will explain what mvvm is when you
should use it and why and how to

1452
00:32:00,460 --> 00:32:00,470
should use it and why and how to
 

1453
00:32:00,470 --> 00:32:04,390
should use it and why and how to
implement it but briefly we use mvvm for

1454
00:32:04,390 --> 00:32:04,400
implement it but briefly we use mvvm for
 

1455
00:32:04,400 --> 00:32:06,340
implement it but briefly we use mvvm for
decoupling our application from a

1456
00:32:06,340 --> 00:32:06,350
decoupling our application from a
 

1457
00:32:06,350 --> 00:32:08,350
decoupling our application from a
presentation framework like xamarin and

1458
00:32:08,350 --> 00:32:08,360
presentation framework like xamarin and
 

1459
00:32:08,360 --> 00:32:12,040
presentation framework like xamarin and
we do this for testability so at the end

1460
00:32:12,040 --> 00:32:12,050
we do this for testability so at the end
 

1461
00:32:12,050 --> 00:32:13,780
we do this for testability so at the end
of this section I've got a short video

1462
00:32:13,780 --> 00:32:13,790
of this section I've got a short video
 

1463
00:32:13,790 --> 00:32:16,510
of this section I've got a short video
where I show you how to unit test your

1464
00:32:16,510 --> 00:32:16,520
where I show you how to unit test your
 

1465
00:32:16,520 --> 00:32:18,840
where I show you how to unit test your
view models more on this later and

1466
00:32:18,840 --> 00:32:18,850
view models more on this later and
 

1467
00:32:18,850 --> 00:32:21,190
view models more on this later and
finally in the last section you're going

1468
00:32:21,190 --> 00:32:21,200
finally in the last section you're going
 

1469
00:32:21,200 --> 00:32:22,960
finally in the last section you're going
to look at some more practices and

1470
00:32:22,960 --> 00:32:22,970
to look at some more practices and
 

1471
00:32:22,970 --> 00:32:24,700
to look at some more practices and
features that are useful in building

1472
00:32:24,700 --> 00:32:24,710
features that are useful in building
 

1473
00:32:24,710 --> 00:32:28,120
features that are useful in building
larger complex applications and in this

1474
00:32:28,120 --> 00:32:28,130
larger complex applications and in this
 

1475
00:32:28,130 --> 00:32:29,650
larger complex applications and in this
section I will show you some of the

1476
00:32:29,650 --> 00:32:29,660
section I will show you some of the
 

1477
00:32:29,660 --> 00:32:31,630
section I will show you some of the
useful plugins that you can use to

1478
00:32:31,630 --> 00:32:31,640
useful plugins that you can use to
 

1479
00:32:31,640 --> 00:32:34,510
useful plugins that you can use to
access common device functionality like

1480
00:32:34,510 --> 00:32:34,520
access common device functionality like
 

1481
00:32:34,520 --> 00:32:37,630
access common device functionality like
using the camera GPS checking the status

1482
00:32:37,630 --> 00:32:37,640
using the camera GPS checking the status
 

1483
00:32:37,640 --> 00:32:39,630
using the camera GPS checking the status
of the battery detecting motion

1484
00:32:39,630 --> 00:32:39,640
of the battery detecting motion
 

1485
00:32:39,640 --> 00:32:43,000
of the battery detecting motion
accessing contact book and so on so

1486
00:32:43,000 --> 00:32:43,010
accessing contact book and so on so
 

1487
00:32:43,010 --> 00:32:44,590
accessing contact book and so on so
there is a lot to cover over the next

1488
00:32:44,590 --> 00:32:44,600
there is a lot to cover over the next
 

1489
00:32:44,600 --> 00:32:46,660
there is a lot to cover over the next
seven hours and I hope by the end of

1490
00:32:46,660 --> 00:32:46,670
seven hours and I hope by the end of
 

1491
00:32:46,670 --> 00:32:48,340
seven hours and I hope by the end of
watching this course you will have a

1492
00:32:48,340 --> 00:32:48,350
watching this course you will have a
 

1493
00:32:48,350 --> 00:32:50,200
watching this course you will have a
very solid foundation to build

1494
00:32:50,200 --> 00:32:50,210
very solid foundation to build
 

1495
00:32:50,210 --> 00:32:52,960
very solid foundation to build
cross-platform mobile apps using xamarin

1496
00:32:52,960 --> 00:32:52,970
cross-platform mobile apps using xamarin
 

1497
00:32:52,970 --> 00:32:54,410
cross-platform mobile apps using xamarin
forms

1498
00:32:54,410 --> 00:32:54,420
forms
 

1499
00:32:54,420 --> 00:33:01,570
forms
[Music]

1500
00:33:01,570 --> 00:33:01,580
[Music]
 

1501
00:33:01,580 --> 00:33:04,970
[Music]
well hello it's mash here I hope you've

1502
00:33:04,970 --> 00:33:04,980
well hello it's mash here I hope you've
 

1503
00:33:04,980 --> 00:33:06,650
well hello it's mash here I hope you've
been enjoying watching my salmon forms

1504
00:33:06,650 --> 00:33:06,660
been enjoying watching my salmon forms
 

1505
00:33:06,660 --> 00:33:08,720
been enjoying watching my salmon forms
tutorial in case you didn't know this

1506
00:33:08,720 --> 00:33:08,730
tutorial in case you didn't know this
 

1507
00:33:08,730 --> 00:33:11,060
tutorial in case you didn't know this
tutorial is the first hour of my

1508
00:33:11,060 --> 00:33:11,070
tutorial is the first hour of my
 

1509
00:33:11,070 --> 00:33:13,460
tutorial is the first hour of my
comprehensive seven and half hour course

1510
00:33:13,460 --> 00:33:13,470
comprehensive seven and half hour course
 

1511
00:33:13,470 --> 00:33:15,830
comprehensive seven and half hour course
on udemy in this course you will learn

1512
00:33:15,830 --> 00:33:15,840
on udemy in this course you will learn
 

1513
00:33:15,840 --> 00:33:18,320
on udemy in this course you will learn
how to build native mobile apps for

1514
00:33:18,320 --> 00:33:18,330
how to build native mobile apps for
 

1515
00:33:18,330 --> 00:33:22,040
how to build native mobile apps for
Android iOS and windows with c-sharp if

1516
00:33:22,040 --> 00:33:22,050
Android iOS and windows with c-sharp if
 

1517
00:33:22,050 --> 00:33:23,720
Android iOS and windows with c-sharp if
you're interested to have this course

1518
00:33:23,720 --> 00:33:23,730
you're interested to have this course
 

1519
00:33:23,730 --> 00:33:26,360
you're interested to have this course
you can get it with a big discount using

1520
00:33:26,360 --> 00:33:26,370
you can get it with a big discount using
 

1521
00:33:26,370 --> 00:33:28,670
you can get it with a big discount using
the link in the video description and if

1522
00:33:28,670 --> 00:33:28,680
the link in the video description and if
 

1523
00:33:28,680 --> 00:33:30,620
the link in the video description and if
not that's perfectly fine continue

1524
00:33:30,620 --> 00:33:30,630
not that's perfectly fine continue
 

1525
00:33:30,630 --> 00:33:32,600
not that's perfectly fine continue
watching as the next section is coming

1526
00:33:32,600 --> 00:33:32,610
watching as the next section is coming
 

1527
00:33:32,610 --> 00:33:41,000
watching as the next section is coming
up so as I explained in the last section

1528
00:33:41,000 --> 00:33:41,010
up so as I explained in the last section
 

1529
00:33:41,010 --> 00:33:44,060
up so as I explained in the last section
samo is an xml-based language that we

1530
00:33:44,060 --> 00:33:44,070
samo is an xml-based language that we
 

1531
00:33:44,070 --> 00:33:46,040
samo is an xml-based language that we
use to define the visual appearance of

1532
00:33:46,040 --> 00:33:46,050
use to define the visual appearance of
 

1533
00:33:46,050 --> 00:33:48,350
use to define the visual appearance of
our applications we're going to use them

1534
00:33:48,350 --> 00:33:48,360
our applications we're going to use them
 

1535
00:33:48,360 --> 00:33:50,750
our applications we're going to use them
a lot throughout this course so in this

1536
00:33:50,750 --> 00:33:50,760
a lot throughout this course so in this
 

1537
00:33:50,760 --> 00:33:52,610
a lot throughout this course so in this
section you're going to learn samo in

1538
00:33:52,610 --> 00:33:52,620
section you're going to learn samo in
 

1539
00:33:52,620 --> 00:33:54,440
section you're going to learn samo in
more detail and by the end of this

1540
00:33:54,440 --> 00:33:54,450
more detail and by the end of this
 

1541
00:33:54,450 --> 00:33:56,060
more detail and by the end of this
section you will have a good foundation

1542
00:33:56,060 --> 00:33:56,070
section you will have a good foundation
 

1543
00:33:56,070 --> 00:33:58,160
section you will have a good foundation
that will help you progress through the

1544
00:33:58,160 --> 00:33:58,170
that will help you progress through the
 

1545
00:33:58,170 --> 00:34:05,700
that will help you progress through the
rest of the course so let's get started

1546
00:34:05,700 --> 00:34:05,710

 

1547
00:34:05,710 --> 00:34:07,960

okay continuing from the project we

1548
00:34:07,960 --> 00:34:07,970
okay continuing from the project we
 

1549
00:34:07,970 --> 00:34:10,300
okay continuing from the project we
created in the last section in our greet

1550
00:34:10,300 --> 00:34:10,310
created in the last section in our greet
 

1551
00:34:10,310 --> 00:34:12,010
created in the last section in our greet
page first I'm going to delete this

1552
00:34:12,010 --> 00:34:12,020
page first I'm going to delete this
 

1553
00:34:12,020 --> 00:34:15,849
page first I'm going to delete this
button and then in the code-behind I'm

1554
00:34:15,849 --> 00:34:15,859
button and then in the code-behind I'm
 

1555
00:34:15,859 --> 00:34:18,869
button and then in the code-behind I'm
also going to remove this event handler

1556
00:34:18,869 --> 00:34:18,879
also going to remove this event handler
 

1557
00:34:18,879 --> 00:34:21,580
also going to remove this event handler
now back in the salmon file I want to

1558
00:34:21,580 --> 00:34:21,590
now back in the salmon file I want to
 

1559
00:34:21,590 --> 00:34:25,960
now back in the salmon file I want to
put a label on the page so label I want

1560
00:34:25,960 --> 00:34:25,970
put a label on the page so label I want
 

1561
00:34:25,970 --> 00:34:27,639
put a label on the page so label I want
to put it in the middle of the screen so

1562
00:34:27,639 --> 00:34:27,649
to put it in the middle of the screen so
 

1563
00:34:27,649 --> 00:34:31,540
to put it in the middle of the screen so
horizontal options center vertical

1564
00:34:31,540 --> 00:34:31,550
horizontal options center vertical
 

1565
00:34:31,550 --> 00:34:37,950
horizontal options center vertical
options Center and text hello world now

1566
00:34:37,950 --> 00:34:37,960
options Center and text hello world now
 

1567
00:34:37,960 --> 00:34:41,109
options Center and text hello world now
we can create the same UI using code

1568
00:34:41,109 --> 00:34:41,119
we can create the same UI using code
 

1569
00:34:41,119 --> 00:34:44,800
we can create the same UI using code
instead of zamel let me show you how so

1570
00:34:44,800 --> 00:34:44,810
instead of zamel let me show you how so
 

1571
00:34:44,810 --> 00:34:47,169
instead of zamel let me show you how so
back in the code behind in the

1572
00:34:47,169 --> 00:34:47,179
back in the code behind in the
 

1573
00:34:47,179 --> 00:34:50,169
back in the code behind in the
constructor after the call to initialize

1574
00:34:50,169 --> 00:34:50,179
constructor after the call to initialize
 

1575
00:34:50,179 --> 00:34:52,659
constructor after the call to initialize
component we can set the content

1576
00:34:52,659 --> 00:34:52,669
component we can set the content
 

1577
00:34:52,669 --> 00:34:55,720
component we can set the content
property of our page this property is

1578
00:34:55,720 --> 00:34:55,730
property of our page this property is
 

1579
00:34:55,730 --> 00:34:58,240
property of our page this property is
derived from content page which is the

1580
00:34:58,240 --> 00:34:58,250
derived from content page which is the
 

1581
00:34:58,250 --> 00:35:01,660
derived from content page which is the
base class for our greet page now we can

1582
00:35:01,660 --> 00:35:01,670
base class for our greet page now we can
 

1583
00:35:01,670 --> 00:35:05,530
base class for our greet page now we can
set this to a new label and set its

1584
00:35:05,530 --> 00:35:05,540
set this to a new label and set its
 

1585
00:35:05,540 --> 00:35:10,090
set this to a new label and set its
properties here so horizontal options we

1586
00:35:10,090 --> 00:35:10,100
properties here so horizontal options we
 

1587
00:35:10,100 --> 00:35:13,000
properties here so horizontal options we
set this to layout options which is an

1588
00:35:13,000 --> 00:35:13,010
set this to layout options which is an
 

1589
00:35:13,010 --> 00:35:17,230
set this to layout options which is an
enumeration that's Center similarly for

1590
00:35:17,230 --> 00:35:17,240
enumeration that's Center similarly for
 

1591
00:35:17,240 --> 00:35:21,880
enumeration that's Center similarly for
vertical options the center and finally

1592
00:35:21,880 --> 00:35:21,890
vertical options the center and finally
 

1593
00:35:21,890 --> 00:35:26,800
vertical options the center and finally
text now don't worry about this red line

1594
00:35:26,800 --> 00:35:26,810
text now don't worry about this red line
 

1595
00:35:26,810 --> 00:35:29,109
text now don't worry about this red line
under initialize component I think

1596
00:35:29,109 --> 00:35:29,119
under initialize component I think
 

1597
00:35:29,119 --> 00:35:30,520
under initialize component I think
there's something wrong with my xamarin

1598
00:35:30,520 --> 00:35:30,530
there's something wrong with my xamarin
 

1599
00:35:30,530 --> 00:35:33,700
there's something wrong with my xamarin
studio now that aside you can see that

1600
00:35:33,700 --> 00:35:33,710
studio now that aside you can see that
 

1601
00:35:33,710 --> 00:35:35,800
studio now that aside you can see that
we can create user interfaces using code

1602
00:35:35,800 --> 00:35:35,810
we can create user interfaces using code
 

1603
00:35:35,810 --> 00:35:38,230
we can create user interfaces using code
as well in this case I'm setting the

1604
00:35:38,230 --> 00:35:38,240
as well in this case I'm setting the
 

1605
00:35:38,240 --> 00:35:41,320
as well in this case I'm setting the
content property to a new label and this

1606
00:35:41,320 --> 00:35:41,330
content property to a new label and this
 

1607
00:35:41,330 --> 00:35:45,070
content property to a new label and this
is exactly equivalent to what we put

1608
00:35:45,070 --> 00:35:45,080
is exactly equivalent to what we put
 

1609
00:35:45,080 --> 00:35:47,260
is exactly equivalent to what we put
between opening and closing tags of

1610
00:35:47,260 --> 00:35:47,270
between opening and closing tags of
 

1611
00:35:47,270 --> 00:35:50,740
between opening and closing tags of
content page element now you might ask

1612
00:35:50,740 --> 00:35:50,750
content page element now you might ask
 

1613
00:35:50,750 --> 00:35:52,630
content page element now you might ask
maash why do we want to create user

1614
00:35:52,630 --> 00:35:52,640
maash why do we want to create user
 

1615
00:35:52,640 --> 00:35:54,550
maash why do we want to create user
interfaces in the code as opposed to

1616
00:35:54,550 --> 00:35:54,560
interfaces in the code as opposed to
 

1617
00:35:54,560 --> 00:35:57,070
interfaces in the code as opposed to
sam'l well in more than 90 percent of

1618
00:35:57,070 --> 00:35:57,080
sam'l well in more than 90 percent of
 

1619
00:35:57,080 --> 00:35:59,740
sam'l well in more than 90 percent of
the cases it would use samo you would

1620
00:35:59,740 --> 00:35:59,750
the cases it would use samo you would
 

1621
00:35:59,750 --> 00:36:01,450
the cases it would use samo you would
use code only if you want to add

1622
00:36:01,450 --> 00:36:01,460
use code only if you want to add
 

1623
00:36:01,460 --> 00:36:04,900
use code only if you want to add
elements on a page dynamically for

1624
00:36:04,900 --> 00:36:04,910
elements on a page dynamically for
 

1625
00:36:04,910 --> 00:36:05,890
elements on a page dynamically for
example depending on different

1626
00:36:05,890 --> 00:36:05,900
example depending on different
 

1627
00:36:05,900 --> 00:36:07,359
example depending on different
circumstances you may want to add a

1628
00:36:07,359 --> 00:36:07,369
circumstances you may want to add a
 

1629
00:36:07,369 --> 00:36:09,609
circumstances you may want to add a
label or a button or a slider or whatnot

1630
00:36:09,609 --> 00:36:09,619
label or a button or a slider or whatnot
 

1631
00:36:09,619 --> 00:36:13,030
label or a button or a slider or whatnot
and all this can happen dynamically but

1632
00:36:13,030 --> 00:36:13,040
and all this can happen dynamically but
 

1633
00:36:13,040 --> 00:36:15,010
and all this can happen dynamically but
as I said this is the kind of behavior

1634
00:36:15,010 --> 00:36:15,020
as I said this is the kind of behavior
 

1635
00:36:15,020 --> 00:36:18,400
as I said this is the kind of behavior
that most applications don't exhibit so

1636
00:36:18,400 --> 00:36:18,410
that most applications don't exhibit so
 

1637
00:36:18,410 --> 00:36:19,540
that most applications don't exhibit so
all I want you to take away

1638
00:36:19,540 --> 00:36:19,550
all I want you to take away
 

1639
00:36:19,550 --> 00:36:21,640
all I want you to take away
here is that if you want to put elements

1640
00:36:21,640 --> 00:36:21,650
here is that if you want to put elements
 

1641
00:36:21,650 --> 00:36:24,070
here is that if you want to put elements
on a page dynamically you can do it in

1642
00:36:24,070 --> 00:36:24,080
on a page dynamically you can do it in
 

1643
00:36:24,080 --> 00:36:27,280
on a page dynamically you can do it in
the code now why is that better than the

1644
00:36:27,280 --> 00:36:27,290
the code now why is that better than the
 

1645
00:36:27,290 --> 00:36:29,850
the code now why is that better than the
code because it's cleaner and less noisy

1646
00:36:29,850 --> 00:36:29,860
code because it's cleaner and less noisy
 

1647
00:36:29,860 --> 00:36:32,440
code because it's cleaner and less noisy
look at these properties here horizontal

1648
00:36:32,440 --> 00:36:32,450
look at these properties here horizontal
 

1649
00:36:32,450 --> 00:36:34,720
look at these properties here horizontal
options and vertical options we're

1650
00:36:34,720 --> 00:36:34,730
options and vertical options we're
 

1651
00:36:34,730 --> 00:36:36,940
options and vertical options we're
simply setting them to your string value

1652
00:36:36,940 --> 00:36:36,950
simply setting them to your string value
 

1653
00:36:36,950 --> 00:36:40,720
simply setting them to your string value
Center now look at the equivalent in the

1654
00:36:40,720 --> 00:36:40,730
Center now look at the equivalent in the
 

1655
00:36:40,730 --> 00:36:43,660
Center now look at the equivalent in the
code we have to prefix this value with

1656
00:36:43,660 --> 00:36:43,670
code we have to prefix this value with
 

1657
00:36:43,670 --> 00:36:45,460
code we have to prefix this value with
layout options the name of the

1658
00:36:45,460 --> 00:36:45,470
layout options the name of the
 

1659
00:36:45,470 --> 00:36:47,530
layout options the name of the
enumeration so there is a little bit of

1660
00:36:47,530 --> 00:36:47,540
enumeration so there is a little bit of
 

1661
00:36:47,540 --> 00:36:49,870
enumeration so there is a little bit of
noise in the code and this can get worse

1662
00:36:49,870 --> 00:36:49,880
noise in the code and this can get worse
 

1663
00:36:49,880 --> 00:36:52,270
noise in the code and this can get worse
when you're dealing with complex

1664
00:36:52,270 --> 00:36:52,280
when you're dealing with complex
 

1665
00:36:52,280 --> 00:36:55,180
when you're dealing with complex
hierarchical structures in those

1666
00:36:55,180 --> 00:36:55,190
hierarchical structures in those
 

1667
00:36:55,190 --> 00:36:57,750
hierarchical structures in those
situations sam'l is a definite winner

1668
00:36:57,750 --> 00:36:57,760
situations sam'l is a definite winner
 

1669
00:36:57,760 --> 00:37:01,230
situations sam'l is a definite winner
because XML is naturally hierarchical

1670
00:37:01,230 --> 00:37:01,240
because XML is naturally hierarchical
 

1671
00:37:01,240 --> 00:37:04,240
because XML is naturally hierarchical
now the reality is even when we use demo

1672
00:37:04,240 --> 00:37:04,250
now the reality is even when we use demo
 

1673
00:37:04,250 --> 00:37:07,420
now the reality is even when we use demo
at runtime we have a sam'l parser that

1674
00:37:07,420 --> 00:37:07,430
at runtime we have a sam'l parser that
 

1675
00:37:07,430 --> 00:37:09,550
at runtime we have a sam'l parser that
reads this demo file and it will

1676
00:37:09,550 --> 00:37:09,560
reads this demo file and it will
 

1677
00:37:09,560 --> 00:37:11,920
reads this demo file and it will
instantiate objects just like the code

1678
00:37:11,920 --> 00:37:11,930
instantiate objects just like the code
 

1679
00:37:11,930 --> 00:37:14,500
instantiate objects just like the code
we have written here so the exact same

1680
00:37:14,500 --> 00:37:14,510
we have written here so the exact same
 

1681
00:37:14,510 --> 00:37:16,630
we have written here so the exact same
code will be executed by the sam'l

1682
00:37:16,630 --> 00:37:16,640
code will be executed by the sam'l
 

1683
00:37:16,640 --> 00:37:19,120
code will be executed by the sam'l
parser let me show you when it happens

1684
00:37:19,120 --> 00:37:19,130
parser let me show you when it happens
 

1685
00:37:19,130 --> 00:37:22,960
parser let me show you when it happens
so in the solution I'm going to right

1686
00:37:22,960 --> 00:37:22,970
so in the solution I'm going to right
 

1687
00:37:22,970 --> 00:37:25,990
so in the solution I'm going to right
click the solution and set display

1688
00:37:25,990 --> 00:37:26,000
click the solution and set display
 

1689
00:37:26,000 --> 00:37:30,700
click the solution and set display
options to show all files if you look at

1690
00:37:30,700 --> 00:37:30,710
options to show all files if you look at
 

1691
00:37:30,710 --> 00:37:35,440
options to show all files if you look at
the object folder under debug we have a

1692
00:37:35,440 --> 00:37:35,450
the object folder under debug we have a
 

1693
00:37:35,450 --> 00:37:38,020
the object folder under debug we have a
file here hello world that greet page

1694
00:37:38,020 --> 00:37:38,030
file here hello world that greet page
 

1695
00:37:38,030 --> 00:37:40,780
file here hello world that greet page
that zamel the G which stands for

1696
00:37:40,780 --> 00:37:40,790
that zamel the G which stands for
 

1697
00:37:40,790 --> 00:37:46,120
that zamel the G which stands for
generated dot C s so this class is

1698
00:37:46,120 --> 00:37:46,130
generated dot C s so this class is
 

1699
00:37:46,130 --> 00:37:48,790
generated dot C s so this class is
automatically generated for us we can

1700
00:37:48,790 --> 00:37:48,800
automatically generated for us we can
 

1701
00:37:48,800 --> 00:37:50,650
automatically generated for us we can
see it's a partial class so part of that

1702
00:37:50,650 --> 00:37:50,660
see it's a partial class so part of that
 

1703
00:37:50,660 --> 00:37:53,830
see it's a partial class so part of that
is here and the other part is in the

1704
00:37:53,830 --> 00:37:53,840
is here and the other part is in the
 

1705
00:37:53,840 --> 00:37:55,770
is here and the other part is in the
code behind

1706
00:37:55,770 --> 00:37:55,780
code behind
 

1707
00:37:55,780 --> 00:37:57,930
code behind
you can see here we have a call to

1708
00:37:57,930 --> 00:37:57,940
you can see here we have a call to
 

1709
00:37:57,940 --> 00:38:00,990
you can see here we have a call to
initialize component method now you

1710
00:38:00,990 --> 00:38:01,000
initialize component method now you
 

1711
00:38:01,000 --> 00:38:02,430
initialize component method now you
might think this method is inherited

1712
00:38:02,430 --> 00:38:02,440
might think this method is inherited
 

1713
00:38:02,440 --> 00:38:05,580
might think this method is inherited
from content page but no it's not there

1714
00:38:05,580 --> 00:38:05,590
from content page but no it's not there
 

1715
00:38:05,590 --> 00:38:09,930
from content page but no it's not there
it's defined in this generated code look

1716
00:38:09,930 --> 00:38:09,940
it's defined in this generated code look
 

1717
00:38:09,940 --> 00:38:13,140
it's defined in this generated code look
it's here and inside this method we have

1718
00:38:13,140 --> 00:38:13,150
it's here and inside this method we have
 

1719
00:38:13,150 --> 00:38:16,650
it's here and inside this method we have
a call to load from zamel so when we

1720
00:38:16,650 --> 00:38:16,660
a call to load from zamel so when we
 

1721
00:38:16,660 --> 00:38:18,960
a call to load from zamel so when we
compile our our application our example

1722
00:38:18,960 --> 00:38:18,970
compile our our application our example
 

1723
00:38:18,970 --> 00:38:21,290
compile our our application our example
files are embedded in our assembly and

1724
00:38:21,290 --> 00:38:21,300
files are embedded in our assembly and
 

1725
00:38:21,300 --> 00:38:24,420
files are embedded in our assembly and
at runtime when initialize component is

1726
00:38:24,420 --> 00:38:24,430
at runtime when initialize component is
 

1727
00:38:24,430 --> 00:38:26,970
at runtime when initialize component is
called this sam'l file is extracted from

1728
00:38:26,970 --> 00:38:26,980
called this sam'l file is extracted from
 

1729
00:38:26,980 --> 00:38:29,160
called this sam'l file is extracted from
the assembly and pass to the sam'l

1730
00:38:29,160 --> 00:38:29,170
the assembly and pass to the sam'l
 

1731
00:38:29,170 --> 00:38:32,160
the assembly and pass to the sam'l
parser then sam'l parser will take that

1732
00:38:32,160 --> 00:38:32,170
parser then sam'l parser will take that
 

1733
00:38:32,170 --> 00:38:35,610
parser then sam'l parser will take that
sam'l and generate a user interface like

1734
00:38:35,610 --> 00:38:35,620
sam'l and generate a user interface like
 

1735
00:38:35,620 --> 00:38:39,090
sam'l and generate a user interface like
this all right so for now I'm going to

1736
00:38:39,090 --> 00:38:39,100
this all right so for now I'm going to
 

1737
00:38:39,100 --> 00:38:44,400
this all right so for now I'm going to
delete this code here and we're just

1738
00:38:44,400 --> 00:38:44,410
delete this code here and we're just
 

1739
00:38:44,410 --> 00:38:46,320
delete this code here and we're just
going to stick to sam'l for creating

1740
00:38:46,320 --> 00:38:46,330
going to stick to sam'l for creating
 

1741
00:38:46,330 --> 00:38:48,840
going to stick to sam'l for creating
user interfaces next I'm going to talk

1742
00:38:48,840 --> 00:38:48,850
user interfaces next I'm going to talk
 

1743
00:38:48,850 --> 00:38:54,290
user interfaces next I'm going to talk
about content property

1744
00:38:54,290 --> 00:38:54,300

 

1745
00:38:54,300 --> 00:38:55,730

all right now let me show you something

1746
00:38:55,730 --> 00:38:55,740
all right now let me show you something
 

1747
00:38:55,740 --> 00:39:00,160
all right now let me show you something
I want to put a slider below this label

1748
00:39:00,160 --> 00:39:00,170
I want to put a slider below this label
 

1749
00:39:00,170 --> 00:39:04,810
I want to put a slider below this label
slider but if I run this application now

1750
00:39:04,810 --> 00:39:04,820
slider but if I run this application now
 

1751
00:39:04,820 --> 00:39:08,720
slider but if I run this application now
we only see the label not the slider but

1752
00:39:08,720 --> 00:39:08,730
we only see the label not the slider but
 

1753
00:39:08,730 --> 00:39:10,970
we only see the label not the slider but
why is that all right let's have a look

1754
00:39:10,970 --> 00:39:10,980
why is that all right let's have a look
 

1755
00:39:10,980 --> 00:39:13,010
why is that all right let's have a look
at xamarin documentation to figure out

1756
00:39:13,010 --> 00:39:13,020
at xamarin documentation to figure out
 

1757
00:39:13,020 --> 00:39:16,870
at xamarin documentation to figure out
why so I'm going to search for examine

1758
00:39:16,870 --> 00:39:16,880
why so I'm going to search for examine
 

1759
00:39:16,880 --> 00:39:19,560
why so I'm going to search for examine
content page class

1760
00:39:19,560 --> 00:39:19,570
content page class
 

1761
00:39:19,570 --> 00:39:21,150
content page class
[Music]

1762
00:39:21,150 --> 00:39:21,160
[Music]
 

1763
00:39:21,160 --> 00:39:23,450
[Music]
you

1764
00:39:23,450 --> 00:39:23,460

 

1765
00:39:23,460 --> 00:39:25,309

alright look at the Declaration of

1766
00:39:25,309 --> 00:39:25,319
alright look at the Declaration of
 

1767
00:39:25,319 --> 00:39:27,980
alright look at the Declaration of
content page class this class is

1768
00:39:27,980 --> 00:39:27,990
content page class this class is
 

1769
00:39:27,990 --> 00:39:29,690
content page class this class is
decorated with an attribute called

1770
00:39:29,690 --> 00:39:29,700
decorated with an attribute called
 

1771
00:39:29,700 --> 00:39:33,140
decorated with an attribute called
content property and in this attribute

1772
00:39:33,140 --> 00:39:33,150
content property and in this attribute
 

1773
00:39:33,150 --> 00:39:35,990
content property and in this attribute
we have a string which specifies one of

1774
00:39:35,990 --> 00:39:36,000
we have a string which specifies one of
 

1775
00:39:36,000 --> 00:39:38,930
we have a string which specifies one of
the properties of content page in this

1776
00:39:38,930 --> 00:39:38,940
the properties of content page in this
 

1777
00:39:38,940 --> 00:39:40,370
the properties of content page in this
case the name of that property is

1778
00:39:40,370 --> 00:39:40,380
case the name of that property is
 

1779
00:39:40,380 --> 00:39:42,650
case the name of that property is
content and you saw that in the last

1780
00:39:42,650 --> 00:39:42,660
content and you saw that in the last
 

1781
00:39:42,660 --> 00:39:46,069
content and you saw that in the last
lecture we set the content property to a

1782
00:39:46,069 --> 00:39:46,079
lecture we set the content property to a
 

1783
00:39:46,079 --> 00:39:48,920
lecture we set the content property to a
new label remember now let's look at the

1784
00:39:48,920 --> 00:39:48,930
new label remember now let's look at the
 

1785
00:39:48,930 --> 00:39:53,220
new label remember now let's look at the
Declaration of the content property

1786
00:39:53,220 --> 00:39:53,230

 

1787
00:39:53,230 --> 00:39:57,160

look here's the content property its

1788
00:39:57,160 --> 00:39:57,170
look here's the content property its
 

1789
00:39:57,170 --> 00:40:00,670
look here's the content property its
type is a view view is the base class

1790
00:40:00,670 --> 00:40:00,680
type is a view view is the base class
 

1791
00:40:00,680 --> 00:40:03,670
type is a view view is the base class
for all our visual elements like buttons

1792
00:40:03,670 --> 00:40:03,680
for all our visual elements like buttons
 

1793
00:40:03,680 --> 00:40:07,270
for all our visual elements like buttons
labels sliders and so on so because the

1794
00:40:07,270 --> 00:40:07,280
labels sliders and so on so because the
 

1795
00:40:07,280 --> 00:40:09,700
labels sliders and so on so because the
type of content is view we can set it to

1796
00:40:09,700 --> 00:40:09,710
type of content is view we can set it to
 

1797
00:40:09,710 --> 00:40:12,220
type of content is view we can set it to
an instance of a single view not

1798
00:40:12,220 --> 00:40:12,230
an instance of a single view not
 

1799
00:40:12,230 --> 00:40:15,730
an instance of a single view not
multiple views that's why we cannot have

1800
00:40:15,730 --> 00:40:15,740
multiple views that's why we cannot have
 

1801
00:40:15,740 --> 00:40:18,580
multiple views that's why we cannot have
multiple children or multiple widgets or

1802
00:40:18,580 --> 00:40:18,590
multiple children or multiple widgets or
 

1803
00:40:18,590 --> 00:40:21,160
multiple children or multiple widgets or
multiple views inside content page

1804
00:40:21,160 --> 00:40:21,170
multiple views inside content page
 

1805
00:40:21,170 --> 00:40:24,610
multiple views inside content page
element so what's the solution let me

1806
00:40:24,610 --> 00:40:24,620
element so what's the solution let me
 

1807
00:40:24,620 --> 00:40:28,660
element so what's the solution let me
introduce you to a new element stack

1808
00:40:28,660 --> 00:40:28,670
introduce you to a new element stack
 

1809
00:40:28,670 --> 00:40:33,880
introduce you to a new element stack
layout and then I'm going to move these

1810
00:40:33,880 --> 00:40:33,890
layout and then I'm going to move these
 

1811
00:40:33,890 --> 00:40:38,140
layout and then I'm going to move these
two widgets inside stack layout with

1812
00:40:38,140 --> 00:40:38,150
two widgets inside stack layout with
 

1813
00:40:38,150 --> 00:40:39,690
two widgets inside stack layout with
stack layout we can stack multiple

1814
00:40:39,690 --> 00:40:39,700
stack layout we can stack multiple
 

1815
00:40:39,700 --> 00:40:43,480
stack layout we can stack multiple
widgets horizontally or vertically now I

1816
00:40:43,480 --> 00:40:43,490
widgets horizontally or vertically now I
 

1817
00:40:43,490 --> 00:40:45,250
widgets horizontally or vertically now I
want to make sure both the label and the

1818
00:40:45,250 --> 00:40:45,260
want to make sure both the label and the
 

1819
00:40:45,260 --> 00:40:46,770
want to make sure both the label and the
slider are in the middle of the screen

1820
00:40:46,770 --> 00:40:46,780
slider are in the middle of the screen
 

1821
00:40:46,780 --> 00:40:49,270
slider are in the middle of the screen
so I'm going to grab these two

1822
00:40:49,270 --> 00:40:49,280
so I'm going to grab these two
 

1823
00:40:49,280 --> 00:40:52,180
so I'm going to grab these two
properties horizontal and vertical

1824
00:40:52,180 --> 00:40:52,190
properties horizontal and vertical
 

1825
00:40:52,190 --> 00:40:56,700
properties horizontal and vertical
options and apply them to stack layout

1826
00:40:56,700 --> 00:40:56,710
options and apply them to stack layout
 

1827
00:40:56,710 --> 00:40:59,910
options and apply them to stack layout
now let me run the application again and

1828
00:40:59,910 --> 00:40:59,920
now let me run the application again and
 

1829
00:40:59,920 --> 00:41:02,770
now let me run the application again and
here's the result so here's our label

1830
00:41:02,770 --> 00:41:02,780
here's the result so here's our label
 

1831
00:41:02,780 --> 00:41:05,100
here's the result so here's our label
and here's the slider

1832
00:41:05,100 --> 00:41:05,110
and here's the slider
 

1833
00:41:05,110 --> 00:41:08,890
and here's the slider
now let's inspect stack layout class so

1834
00:41:08,890 --> 00:41:08,900
now let's inspect stack layout class so
 

1835
00:41:08,900 --> 00:41:15,910
now let's inspect stack layout class so
we search for xamarin stack layout class

1836
00:41:15,910 --> 00:41:15,920

 

1837
00:41:15,920 --> 00:41:19,670

look this class derives from layout of

1838
00:41:19,670 --> 00:41:19,680
look this class derives from layout of
 

1839
00:41:19,680 --> 00:41:23,390
look this class derives from layout of
view now if you look at the Declaration

1840
00:41:23,390 --> 00:41:23,400
view now if you look at the Declaration
 

1841
00:41:23,400 --> 00:41:26,390
view now if you look at the Declaration
of layout class you can see the content

1842
00:41:26,390 --> 00:41:26,400
of layout class you can see the content
 

1843
00:41:26,400 --> 00:41:29,450
of layout class you can see the content
property attribute again and look the

1844
00:41:29,450 --> 00:41:29,460
property attribute again and look the
 

1845
00:41:29,460 --> 00:41:31,400
property attribute again and look the
name of the content property for the

1846
00:41:31,400 --> 00:41:31,410
name of the content property for the
 

1847
00:41:31,410 --> 00:41:34,310
name of the content property for the
layout is children so let's look at the

1848
00:41:34,310 --> 00:41:34,320
layout is children so let's look at the
 

1849
00:41:34,320 --> 00:41:37,790
layout is children so let's look at the
children property now if you scroll down

1850
00:41:37,790 --> 00:41:37,800
children property now if you scroll down
 

1851
00:41:37,800 --> 00:41:39,770
children property now if you scroll down
you're not going to see that children

1852
00:41:39,770 --> 00:41:39,780
you're not going to see that children
 

1853
00:41:39,780 --> 00:41:42,740
you're not going to see that children
property you have to navigate up the

1854
00:41:42,740 --> 00:41:42,750
property you have to navigate up the
 

1855
00:41:42,750 --> 00:41:45,620
property you have to navigate up the
hierarchy so we go to the layout class

1856
00:41:45,620 --> 00:41:45,630
hierarchy so we go to the layout class
 

1857
00:41:45,630 --> 00:41:50,270
hierarchy so we go to the layout class
and layout class implements a layout

1858
00:41:50,270 --> 00:41:50,280
and layout class implements a layout
 

1859
00:41:50,280 --> 00:41:54,380
and layout class implements a layout
controller let's look at this interface

1860
00:41:54,380 --> 00:41:54,390
controller let's look at this interface
 

1861
00:41:54,390 --> 00:41:57,900
controller let's look at this interface
now look at the children property it's

1862
00:41:57,900 --> 00:41:57,910
now look at the children property it's
 

1863
00:41:57,910 --> 00:42:01,350
now look at the children property it's
of type I you read only list so these

1864
00:42:01,350 --> 00:42:01,360
of type I you read only list so these
 

1865
00:42:01,360 --> 00:42:03,390
of type I you read only list so these
children property because it's a kind of

1866
00:42:03,390 --> 00:42:03,400
children property because it's a kind of
 

1867
00:42:03,400 --> 00:42:06,260
children property because it's a kind of
list it can contain multiple widgets and

1868
00:42:06,260 --> 00:42:06,270
list it can contain multiple widgets and
 

1869
00:42:06,270 --> 00:42:08,880
list it can contain multiple widgets and
that's the reason we can use a stack

1870
00:42:08,880 --> 00:42:08,890
that's the reason we can use a stack
 

1871
00:42:08,890 --> 00:42:11,430
that's the reason we can use a stack
layout to stack multiple widgets on the

1872
00:42:11,430 --> 00:42:11,440
layout to stack multiple widgets on the
 

1873
00:42:11,440 --> 00:42:14,520
layout to stack multiple widgets on the
screen alright next we want to take this

1874
00:42:14,520 --> 00:42:14,530
screen alright next we want to take this
 

1875
00:42:14,530 --> 00:42:16,950
screen alright next we want to take this
application to the next level so we want

1876
00:42:16,950 --> 00:42:16,960
application to the next level so we want
 

1877
00:42:16,960 --> 00:42:19,200
application to the next level so we want
to add this behavior such that when we

1878
00:42:19,200 --> 00:42:19,210
to add this behavior such that when we
 

1879
00:42:19,210 --> 00:42:22,560
to add this behavior such that when we
move this slider the label is updated to

1880
00:42:22,560 --> 00:42:22,570
move this slider the label is updated to
 

1881
00:42:22,570 --> 00:42:27,850
move this slider the label is updated to
show the current value of the slider

1882
00:42:27,850 --> 00:42:27,860

 

1883
00:42:27,860 --> 00:42:29,440

alright now we want to take this

1884
00:42:29,440 --> 00:42:29,450
alright now we want to take this
 

1885
00:42:29,450 --> 00:42:31,780
alright now we want to take this
application a little bit further so we

1886
00:42:31,780 --> 00:42:31,790
application a little bit further so we
 

1887
00:42:31,790 --> 00:42:33,940
application a little bit further so we
want to add this behavior such that when

1888
00:42:33,940 --> 00:42:33,950
want to add this behavior such that when
 

1889
00:42:33,950 --> 00:42:36,400
want to add this behavior such that when
we move the slider the label is updated

1890
00:42:36,400 --> 00:42:36,410
we move the slider the label is updated
 

1891
00:42:36,410 --> 00:42:38,100
we move the slider the label is updated
to show the current value of the slider

1892
00:42:38,100 --> 00:42:38,110
to show the current value of the slider
 

1893
00:42:38,110 --> 00:42:41,170
to show the current value of the slider
to implement this we need to handle the

1894
00:42:41,170 --> 00:42:41,180
to implement this we need to handle the
 

1895
00:42:41,180 --> 00:42:43,540
to implement this we need to handle the
value change event of this slider and

1896
00:42:43,540 --> 00:42:43,550
value change event of this slider and
 

1897
00:42:43,550 --> 00:42:46,240
value change event of this slider and
then in our event handler we can get the

1898
00:42:46,240 --> 00:42:46,250
then in our event handler we can get the
 

1899
00:42:46,250 --> 00:42:49,180
then in our event handler we can get the
current value and then set the label so

1900
00:42:49,180 --> 00:42:49,190
current value and then set the label so
 

1901
00:42:49,190 --> 00:42:52,120
current value and then set the label so
pretty basic in the first section you

1902
00:42:52,120 --> 00:42:52,130
pretty basic in the first section you
 

1903
00:42:52,130 --> 00:42:53,860
pretty basic in the first section you
saw an example of handling the click

1904
00:42:53,860 --> 00:42:53,870
saw an example of handling the click
 

1905
00:42:53,870 --> 00:42:57,010
saw an example of handling the click
event of a button in xamarin forms so

1906
00:42:57,010 --> 00:42:57,020
event of a button in xamarin forms so
 

1907
00:42:57,020 --> 00:42:58,060
event of a button in xamarin forms so
the technique we are going to use here

1908
00:42:58,060 --> 00:42:58,070
the technique we are going to use here
 

1909
00:42:58,070 --> 00:43:01,060
the technique we are going to use here
is exactly the same for the slider we

1910
00:43:01,060 --> 00:43:01,070
is exactly the same for the slider we
 

1911
00:43:01,070 --> 00:43:05,260
is exactly the same for the slider we
handle the value changed event and set

1912
00:43:05,260 --> 00:43:05,270
handle the value changed event and set
 

1913
00:43:05,270 --> 00:43:07,390
handle the value changed event and set
this to the name of a method in our code

1914
00:43:07,390 --> 00:43:07,400
this to the name of a method in our code
 

1915
00:43:07,400 --> 00:43:11,560
this to the name of a method in our code
behind so enter enter now I'm going to

1916
00:43:11,560 --> 00:43:11,570
behind so enter enter now I'm going to
 

1917
00:43:11,570 --> 00:43:16,240
behind so enter enter now I'm going to
move this down okay inside our event

1918
00:43:16,240 --> 00:43:16,250
move this down okay inside our event
 

1919
00:43:16,250 --> 00:43:18,910
move this down okay inside our event
handler we can use this e argument

1920
00:43:18,910 --> 00:43:18,920
handler we can use this e argument
 

1921
00:43:18,920 --> 00:43:21,460
handler we can use this e argument
passed to this method to get the new

1922
00:43:21,460 --> 00:43:21,470
passed to this method to get the new
 

1923
00:43:21,470 --> 00:43:24,730
passed to this method to get the new
value of the slider but we need a

1924
00:43:24,730 --> 00:43:24,740
value of the slider but we need a
 

1925
00:43:24,740 --> 00:43:26,680
value of the slider but we need a
reference to the label so we can set its

1926
00:43:26,680 --> 00:43:26,690
reference to the label so we can set its
 

1927
00:43:26,690 --> 00:43:29,700
reference to the label so we can set its
text how do we do it well

1928
00:43:29,700 --> 00:43:29,710
text how do we do it well
 

1929
00:43:29,710 --> 00:43:33,010
text how do we do it well
back in our demo I'm going to give this

1930
00:43:33,010 --> 00:43:33,020
back in our demo I'm going to give this
 

1931
00:43:33,020 --> 00:43:38,620
back in our demo I'm going to give this
label a name or an ID so we use one of

1932
00:43:38,620 --> 00:43:38,630
label a name or an ID so we use one of
 

1933
00:43:38,630 --> 00:43:41,200
label a name or an ID so we use one of
the attributes defined in Microsoft

1934
00:43:41,200 --> 00:43:41,210
the attributes defined in Microsoft
 

1935
00:43:41,210 --> 00:43:47,800
the attributes defined in Microsoft
namespace so X colon name this X is a

1936
00:43:47,800 --> 00:43:47,810
namespace so X colon name this X is a
 

1937
00:43:47,810 --> 00:43:50,230
namespace so X colon name this X is a
prefix which is declared in the XML

1938
00:43:50,230 --> 00:43:50,240
prefix which is declared in the XML
 

1939
00:43:50,240 --> 00:43:52,570
prefix which is declared in the XML
namespace declaration for Microsoft

1940
00:43:52,570 --> 00:43:52,580
namespace declaration for Microsoft
 

1941
00:43:52,580 --> 00:43:55,810
namespace declaration for Microsoft
namespace so this name attribute belongs

1942
00:43:55,810 --> 00:43:55,820
namespace so this name attribute belongs
 

1943
00:43:55,820 --> 00:43:58,000
namespace so this name attribute belongs
to the standards ammo that Microsoft

1944
00:43:58,000 --> 00:43:58,010
to the standards ammo that Microsoft
 

1945
00:43:58,010 --> 00:44:01,030
to the standards ammo that Microsoft
introduced in 2009 and it's applicable

1946
00:44:01,030 --> 00:44:01,040
introduced in 2009 and it's applicable
 

1947
00:44:01,040 --> 00:44:03,670
introduced in 2009 and it's applicable
in other frameworks that use ammo like

1948
00:44:03,670 --> 00:44:03,680
in other frameworks that use ammo like
 

1949
00:44:03,680 --> 00:44:05,440
in other frameworks that use ammo like
Silverlight or Windows presentation

1950
00:44:05,440 --> 00:44:05,450
Silverlight or Windows presentation
 

1951
00:44:05,450 --> 00:44:09,460
Silverlight or Windows presentation
foundation or xamarin forms now we set

1952
00:44:09,460 --> 00:44:09,470
foundation or xamarin forms now we set
 

1953
00:44:09,470 --> 00:44:13,680
foundation or xamarin forms now we set
this name to an identifier like label

1954
00:44:13,680 --> 00:44:13,690
this name to an identifier like label
 

1955
00:44:13,690 --> 00:44:18,340
this name to an identifier like label
now when I save this file and go back to

1956
00:44:18,340 --> 00:44:18,350
now when I save this file and go back to
 

1957
00:44:18,350 --> 00:44:22,870
now when I save this file and go back to
the code behind I can type label dot and

1958
00:44:22,870 --> 00:44:22,880
the code behind I can type label dot and
 

1959
00:44:22,880 --> 00:44:25,720
the code behind I can type label dot and
here we have access to our label so we

1960
00:44:25,720 --> 00:44:25,730
here we have access to our label so we
 

1961
00:44:25,730 --> 00:44:28,870
here we have access to our label so we
can set the text property I'm going to

1962
00:44:28,870 --> 00:44:28,880
can set the text property I'm going to
 

1963
00:44:28,880 --> 00:44:34,000
can set the text property I'm going to
use string that format value is provide

1964
00:44:34,000 --> 00:44:34,010
use string that format value is provide
 

1965
00:44:34,010 --> 00:44:36,220
use string that format value is provide
an argument here

1966
00:44:36,220 --> 00:44:36,230
an argument here
 

1967
00:44:36,230 --> 00:44:40,330
an argument here
and then set it to e dot new value now

1968
00:44:40,330 --> 00:44:40,340
and then set it to e dot new value now
 

1969
00:44:40,340 --> 00:44:41,560
and then set it to e dot new value now
the value we get here is a

1970
00:44:41,560 --> 00:44:41,570
the value we get here is a
 

1971
00:44:41,570 --> 00:44:43,599
the value we get here is a
floating-point number between zero to

1972
00:44:43,599 --> 00:44:43,609
floating-point number between zero to
 

1973
00:44:43,609 --> 00:44:45,760
floating-point number between zero to
one and there are a lot of digits after

1974
00:44:45,760 --> 00:44:45,770
one and there are a lot of digits after
 

1975
00:44:45,770 --> 00:44:48,370
one and there are a lot of digits after
decimal point so I would like to format

1976
00:44:48,370 --> 00:44:48,380
decimal point so I would like to format
 

1977
00:44:48,380 --> 00:44:53,410
decimal point so I would like to format
this value to fix point with two digits

1978
00:44:53,410 --> 00:44:53,420
this value to fix point with two digits
 

1979
00:44:53,420 --> 00:44:56,650
this value to fix point with two digits
after the decimal point so let's run the

1980
00:44:56,650 --> 00:44:56,660
after the decimal point so let's run the
 

1981
00:44:56,660 --> 00:44:58,950
after the decimal point so let's run the
application

1982
00:44:58,950 --> 00:44:58,960
application
 

1983
00:44:58,960 --> 00:45:01,440
application
okay now if I move the slider look the

1984
00:45:01,440 --> 00:45:01,450
okay now if I move the slider look the
 

1985
00:45:01,450 --> 00:45:04,740
okay now if I move the slider look the
value is updated and this is a pattern

1986
00:45:04,740 --> 00:45:04,750
value is updated and this is a pattern
 

1987
00:45:04,750 --> 00:45:05,940
value is updated and this is a pattern
that you see in a lot of real-world

1988
00:45:05,940 --> 00:45:05,950
that you see in a lot of real-world
 

1989
00:45:05,950 --> 00:45:07,890
that you see in a lot of real-world
applications but the value may be

1990
00:45:07,890 --> 00:45:07,900
applications but the value may be
 

1991
00:45:07,900 --> 00:45:10,770
applications but the value may be
displayed as percentage that there is

1992
00:45:10,770 --> 00:45:10,780
displayed as percentage that there is
 

1993
00:45:10,780 --> 00:45:11,940
displayed as percentage that there is
just one tiny problem with this

1994
00:45:11,940 --> 00:45:11,950
just one tiny problem with this
 

1995
00:45:11,950 --> 00:45:16,890
just one tiny problem with this
application let me restart it the label

1996
00:45:16,890 --> 00:45:16,900
application let me restart it the label
 

1997
00:45:16,900 --> 00:45:19,260
application let me restart it the label
is displaying hello world instead of the

1998
00:45:19,260 --> 00:45:19,270
is displaying hello world instead of the
 

1999
00:45:19,270 --> 00:45:22,230
is displaying hello world instead of the
current value of the slider to fix this

2000
00:45:22,230 --> 00:45:22,240
current value of the slider to fix this
 

2001
00:45:22,240 --> 00:45:25,650
current value of the slider to fix this
in the constructor after the call to

2002
00:45:25,650 --> 00:45:25,660
in the constructor after the call to
 

2003
00:45:25,660 --> 00:45:28,140
in the constructor after the call to
initialize component we can explicitly

2004
00:45:28,140 --> 00:45:28,150
initialize component we can explicitly
 

2005
00:45:28,150 --> 00:45:31,410
initialize component we can explicitly
set the value of the slider so again we

2006
00:45:31,410 --> 00:45:31,420
set the value of the slider so again we
 

2007
00:45:31,420 --> 00:45:33,359
set the value of the slider so again we
need a reference to this slider object

2008
00:45:33,359 --> 00:45:33,369
need a reference to this slider object
 

2009
00:45:33,369 --> 00:45:37,849
need a reference to this slider object
so back in our sample file we use X name

2010
00:45:37,849 --> 00:45:37,859
so back in our sample file we use X name
 

2011
00:45:37,859 --> 00:45:41,660
so back in our sample file we use X name
attribute and give it an identifier

2012
00:45:41,660 --> 00:45:41,670
attribute and give it an identifier
 

2013
00:45:41,670 --> 00:45:46,640
attribute and give it an identifier
slider save now back in the code-behind

2014
00:45:46,640 --> 00:45:46,650
slider save now back in the code-behind
 

2015
00:45:46,650 --> 00:45:51,599
slider save now back in the code-behind
we can type slider dot value you can set

2016
00:45:51,599 --> 00:45:51,609
we can type slider dot value you can set
 

2017
00:45:51,609 --> 00:45:54,180
we can type slider dot value you can set
it to 0 or 0.5

2018
00:45:54,180 --> 00:45:54,190
it to 0 or 0.5
 

2019
00:45:54,190 --> 00:45:57,950
it to 0 or 0.5
whatever let's run the application again

2020
00:45:57,950 --> 00:45:57,960
whatever let's run the application again
 

2021
00:45:57,960 --> 00:45:59,780
whatever let's run the application again
okay that's much better

2022
00:45:59,780 --> 00:45:59,790
okay that's much better
 

2023
00:45:59,790 --> 00:46:02,280
okay that's much better
now let me give you a bit more insight

2024
00:46:02,280 --> 00:46:02,290
now let me give you a bit more insight
 

2025
00:46:02,290 --> 00:46:07,349
now let me give you a bit more insight
about this X name attribute so under the

2026
00:46:07,349 --> 00:46:07,359
about this X name attribute so under the
 

2027
00:46:07,359 --> 00:46:11,700
about this X name attribute so under the
object folder debug

2028
00:46:11,700 --> 00:46:11,710

 

2029
00:46:11,710 --> 00:46:13,950

open up hello world that greet page the

2030
00:46:13,950 --> 00:46:13,960
open up hello world that greet page the
 

2031
00:46:13,960 --> 00:46:20,040
open up hello world that greet page the
demo the G that's CS look we have two

2032
00:46:20,040 --> 00:46:20,050
demo the G that's CS look we have two
 

2033
00:46:20,050 --> 00:46:22,740
demo the G that's CS look we have two
private fields here one is label the

2034
00:46:22,740 --> 00:46:22,750
private fields here one is label the
 

2035
00:46:22,750 --> 00:46:25,470
private fields here one is label the
other is a slider and in initialized

2036
00:46:25,470 --> 00:46:25,480
other is a slider and in initialized
 

2037
00:46:25,480 --> 00:46:28,410
other is a slider and in initialized
component method after the call to load

2038
00:46:28,410 --> 00:46:28,420
component method after the call to load
 

2039
00:46:28,420 --> 00:46:30,750
component method after the call to load
from Zemo these private fields are

2040
00:46:30,750 --> 00:46:30,760
from Zemo these private fields are
 

2041
00:46:30,760 --> 00:46:33,900
from Zemo these private fields are
initialized so we have this method find

2042
00:46:33,900 --> 00:46:33,910
initialized so we have this method find
 

2043
00:46:33,910 --> 00:46:36,599
initialized so we have this method find
by name which is inherited from content

2044
00:46:36,599 --> 00:46:36,609
by name which is inherited from content
 

2045
00:46:36,609 --> 00:46:38,730
by name which is inherited from content
page the base class of our grid page and

2046
00:46:38,730 --> 00:46:38,740
page the base class of our grid page and
 

2047
00:46:38,740 --> 00:46:41,370
page the base class of our grid page and
we give this method an argument which

2048
00:46:41,370 --> 00:46:41,380
we give this method an argument which
 

2049
00:46:41,380 --> 00:46:44,250
we give this method an argument which
specifies the name or the identifier for

2050
00:46:44,250 --> 00:46:44,260
specifies the name or the identifier for
 

2051
00:46:44,260 --> 00:46:47,640
specifies the name or the identifier for
our widget with this after initialize

2052
00:46:47,640 --> 00:46:47,650
our widget with this after initialize
 

2053
00:46:47,650 --> 00:46:51,150
our widget with this after initialize
component we can access this private

2054
00:46:51,150 --> 00:46:51,160
component we can access this private
 

2055
00:46:51,160 --> 00:46:54,270
component we can access this private
field like in this case the slider just

2056
00:46:54,270 --> 00:46:54,280
field like in this case the slider just
 

2057
00:46:54,280 --> 00:46:57,180
field like in this case the slider just
remember if you put this line before

2058
00:46:57,180 --> 00:46:57,190
remember if you put this line before
 

2059
00:46:57,190 --> 00:46:59,160
remember if you put this line before
initialize component you're going to get

2060
00:46:59,160 --> 00:46:59,170
initialize component you're going to get
 

2061
00:46:59,170 --> 00:47:01,050
initialize component you're going to get
a null reference exception because that

2062
00:47:01,050 --> 00:47:01,060
a null reference exception because that
 

2063
00:47:01,060 --> 00:47:03,180
a null reference exception because that
private field is not initialized at that

2064
00:47:03,180 --> 00:47:03,190
private field is not initialized at that
 

2065
00:47:03,190 --> 00:47:06,510
private field is not initialized at that
point so in this lecture you learn how

2066
00:47:06,510 --> 00:47:06,520
point so in this lecture you learn how
 

2067
00:47:06,520 --> 00:47:09,390
point so in this lecture you learn how
to access element in code behind using X

2068
00:47:09,390 --> 00:47:09,400
to access element in code behind using X
 

2069
00:47:09,400 --> 00:47:11,940
to access element in code behind using X
name attribute now even though our

2070
00:47:11,940 --> 00:47:11,950
name attribute now even though our
 

2071
00:47:11,950 --> 00:47:14,250
name attribute now even though our
application is fully functioning but

2072
00:47:14,250 --> 00:47:14,260
application is fully functioning but
 

2073
00:47:14,260 --> 00:47:16,470
application is fully functioning but
there is a simpler and cleaner way to

2074
00:47:16,470 --> 00:47:16,480
there is a simpler and cleaner way to
 

2075
00:47:16,480 --> 00:47:18,060
there is a simpler and cleaner way to
implement the exact same functionality

2076
00:47:18,060 --> 00:47:18,070
implement the exact same functionality
 

2077
00:47:18,070 --> 00:47:20,700
implement the exact same functionality
and that's called data binding which I'm

2078
00:47:20,700 --> 00:47:20,710
and that's called data binding which I'm
 

2079
00:47:20,710 --> 00:47:24,410
and that's called data binding which I'm
going to show you in the next lecture

2080
00:47:24,410 --> 00:47:24,420

 

2081
00:47:24,420 --> 00:47:26,970

all right now let's see how we can use

2082
00:47:26,970 --> 00:47:26,980
all right now let's see how we can use
 

2083
00:47:26,980 --> 00:47:29,130
all right now let's see how we can use
data binding to implement the same

2084
00:47:29,130 --> 00:47:29,140
data binding to implement the same
 

2085
00:47:29,140 --> 00:47:31,920
data binding to implement the same
behavior data binding is a concept that

2086
00:47:31,920 --> 00:47:31,930
behavior data binding is a concept that
 

2087
00:47:31,930 --> 00:47:34,260
behavior data binding is a concept that
you see in a lot of UI frameworks like

2088
00:47:34,260 --> 00:47:34,270
you see in a lot of UI frameworks like
 

2089
00:47:34,270 --> 00:47:37,110
you see in a lot of UI frameworks like
WPF and Silverlight and even in web

2090
00:47:37,110 --> 00:47:37,120
WPF and Silverlight and even in web
 

2091
00:47:37,120 --> 00:47:38,940
WPF and Silverlight and even in web
applications we have frameworks like

2092
00:47:38,940 --> 00:47:38,950
applications we have frameworks like
 

2093
00:47:38,950 --> 00:47:41,130
applications we have frameworks like
angular and knockout and many others

2094
00:47:41,130 --> 00:47:41,140
angular and knockout and many others
 

2095
00:47:41,140 --> 00:47:42,810
angular and knockout and many others
that provide this concept of data

2096
00:47:42,810 --> 00:47:42,820
that provide this concept of data
 

2097
00:47:42,820 --> 00:47:45,480
that provide this concept of data
binding basically what it means is that

2098
00:47:45,480 --> 00:47:45,490
binding basically what it means is that
 

2099
00:47:45,490 --> 00:47:47,760
binding basically what it means is that
we bind a property of a user interface

2100
00:47:47,760 --> 00:47:47,770
we bind a property of a user interface
 

2101
00:47:47,770 --> 00:47:50,520
we bind a property of a user interface
element to a property of another object

2102
00:47:50,520 --> 00:47:50,530
element to a property of another object
 

2103
00:47:50,530 --> 00:47:52,860
element to a property of another object
in this case we want to bind the text

2104
00:47:52,860 --> 00:47:52,870
in this case we want to bind the text
 

2105
00:47:52,870 --> 00:47:55,500
in this case we want to bind the text
property of the label to the value

2106
00:47:55,500 --> 00:47:55,510
property of the label to the value
 

2107
00:47:55,510 --> 00:47:58,260
property of the label to the value
property of the slider so when the value

2108
00:47:58,260 --> 00:47:58,270
property of the slider so when the value
 

2109
00:47:58,270 --> 00:48:00,750
property of the slider so when the value
of the slider changes the text property

2110
00:48:00,750 --> 00:48:00,760
of the slider changes the text property
 

2111
00:48:00,760 --> 00:48:02,490
of the slider changes the text property
of the label is automatically updated

2112
00:48:02,490 --> 00:48:02,500
of the label is automatically updated
 

2113
00:48:02,500 --> 00:48:04,890
of the label is automatically updated
with this we don't have to manually

2114
00:48:04,890 --> 00:48:04,900
with this we don't have to manually
 

2115
00:48:04,900 --> 00:48:06,930
with this we don't have to manually
handle the value change event of a

2116
00:48:06,930 --> 00:48:06,940
handle the value change event of a
 

2117
00:48:06,940 --> 00:48:09,510
handle the value change event of a
slider which means we don't need to

2118
00:48:09,510 --> 00:48:09,520
slider which means we don't need to
 

2119
00:48:09,520 --> 00:48:12,120
slider which means we don't need to
create this event handler either so our

2120
00:48:12,120 --> 00:48:12,130
create this event handler either so our
 

2121
00:48:12,130 --> 00:48:13,650
create this event handler either so our
code would be cleaner and more

2122
00:48:13,650 --> 00:48:13,660
code would be cleaner and more
 

2123
00:48:13,660 --> 00:48:16,980
code would be cleaner and more
maintainable internally the framework

2124
00:48:16,980 --> 00:48:16,990
maintainable internally the framework
 

2125
00:48:16,990 --> 00:48:18,630
maintainable internally the framework
itself will create this event handler

2126
00:48:18,630 --> 00:48:18,640
itself will create this event handler
 

2127
00:48:18,640 --> 00:48:22,050
itself will create this event handler
based on our binding expression so let's

2128
00:48:22,050 --> 00:48:22,060
based on our binding expression so let's
 

2129
00:48:22,060 --> 00:48:24,240
based on our binding expression so let's
see how we can do this first of all I'm

2130
00:48:24,240 --> 00:48:24,250
see how we can do this first of all I'm
 

2131
00:48:24,250 --> 00:48:26,750
see how we can do this first of all I'm
going to remove this event handler and

2132
00:48:26,750 --> 00:48:26,760
going to remove this event handler and
 

2133
00:48:26,760 --> 00:48:30,570
going to remove this event handler and
back in zamel I'm also going to remove

2134
00:48:30,570 --> 00:48:30,580
back in zamel I'm also going to remove
 

2135
00:48:30,580 --> 00:48:34,550
back in zamel I'm also going to remove
the value change the attribute of slider

2136
00:48:34,550 --> 00:48:34,560
the value change the attribute of slider
 

2137
00:48:34,560 --> 00:48:37,320
the value change the attribute of slider
now we want to bind the text property of

2138
00:48:37,320 --> 00:48:37,330
now we want to bind the text property of
 

2139
00:48:37,330 --> 00:48:39,480
now we want to bind the text property of
the label to the value property of the

2140
00:48:39,480 --> 00:48:39,490
the label to the value property of the
 

2141
00:48:39,490 --> 00:48:42,030
the label to the value property of the
slider so we need to use a special

2142
00:48:42,030 --> 00:48:42,040
slider so we need to use a special
 

2143
00:48:42,040 --> 00:48:45,390
slider so we need to use a special
syntax for this so far all the attribute

2144
00:48:45,390 --> 00:48:45,400
syntax for this so far all the attribute
 

2145
00:48:45,400 --> 00:48:47,280
syntax for this so far all the attribute
values you have seen have been strings

2146
00:48:47,280 --> 00:48:47,290
values you have seen have been strings
 

2147
00:48:47,290 --> 00:48:50,640
values you have seen have been strings
at runtime these strings are converted

2148
00:48:50,640 --> 00:48:50,650
at runtime these strings are converted
 

2149
00:48:50,650 --> 00:48:52,920
at runtime these strings are converted
to a primitive type or an object using a

2150
00:48:52,920 --> 00:48:52,930
to a primitive type or an object using a
 

2151
00:48:52,930 --> 00:48:55,560
to a primitive type or an object using a
type converter in case of data binding

2152
00:48:55,560 --> 00:48:55,570
type converter in case of data binding
 

2153
00:48:55,570 --> 00:48:58,170
type converter in case of data binding
we cannot convert a string value to a

2154
00:48:58,170 --> 00:48:58,180
we cannot convert a string value to a
 

2155
00:48:58,180 --> 00:49:00,450
we cannot convert a string value to a
binding expression that's why we need a

2156
00:49:00,450 --> 00:49:00,460
binding expression that's why we need a
 

2157
00:49:00,460 --> 00:49:02,670
binding expression that's why we need a
special syntax and example this is

2158
00:49:02,670 --> 00:49:02,680
special syntax and example this is
 

2159
00:49:02,680 --> 00:49:09,150
special syntax and example this is
called sam'l markup extensions so we use

2160
00:49:09,150 --> 00:49:09,160
called sam'l markup extensions so we use
 

2161
00:49:09,160 --> 00:49:12,090
called sam'l markup extensions so we use
curly braces to instruct sam'l parser

2162
00:49:12,090 --> 00:49:12,100
curly braces to instruct sam'l parser
 

2163
00:49:12,100 --> 00:49:14,130
curly braces to instruct sam'l parser
that this is not a string literal and

2164
00:49:14,130 --> 00:49:14,140
that this is not a string literal and
 

2165
00:49:14,140 --> 00:49:16,950
that this is not a string literal and
it's a mark of extension there are many

2166
00:49:16,950 --> 00:49:16,960
it's a mark of extension there are many
 

2167
00:49:16,960 --> 00:49:18,780
it's a mark of extension there are many
different markup extensions available in

2168
00:49:18,780 --> 00:49:18,790
different markup extensions available in
 

2169
00:49:18,790 --> 00:49:20,940
different markup extensions available in
zamo and in this video you're going to

2170
00:49:20,940 --> 00:49:20,950
zamo and in this video you're going to
 

2171
00:49:20,950 --> 00:49:22,980
zamo and in this video you're going to
learn two of them the first one is

2172
00:49:22,980 --> 00:49:22,990
learn two of them the first one is
 

2173
00:49:22,990 --> 00:49:29,070
learn two of them the first one is
binding so curly braces binding now to

2174
00:49:29,070 --> 00:49:29,080
binding so curly braces binding now to
 

2175
00:49:29,080 --> 00:49:31,470
binding so curly braces binding now to
set up binding we need to specify what

2176
00:49:31,470 --> 00:49:31,480
set up binding we need to specify what
 

2177
00:49:31,480 --> 00:49:34,050
set up binding we need to specify what
object we want to bind the text property

2178
00:49:34,050 --> 00:49:34,060
object we want to bind the text property
 

2179
00:49:34,060 --> 00:49:38,190
object we want to bind the text property
to so we set source to

2180
00:49:38,190 --> 00:49:38,200
to so we set source to
 

2181
00:49:38,200 --> 00:49:40,650
to so we set source to
now here we want a reference to the

2182
00:49:40,650 --> 00:49:40,660
now here we want a reference to the
 

2183
00:49:40,660 --> 00:49:43,800
now here we want a reference to the
slider object that's when we use another

2184
00:49:43,800 --> 00:49:43,810
slider object that's when we use another
 

2185
00:49:43,810 --> 00:49:48,080
slider object that's when we use another
markup extension so again curly braces

2186
00:49:48,080 --> 00:49:48,090
markup extension so again curly braces
 

2187
00:49:48,090 --> 00:49:50,880
markup extension so again curly braces
now this mark of extension is called X

2188
00:49:50,880 --> 00:49:50,890
now this mark of extension is called X
 

2189
00:49:50,890 --> 00:49:54,990
now this mark of extension is called X
reference so X colon reference and we

2190
00:49:54,990 --> 00:49:55,000
reference so X colon reference and we
 

2191
00:49:55,000 --> 00:49:58,440
reference so X colon reference and we
use that to reference another object in

2192
00:49:58,440 --> 00:49:58,450
use that to reference another object in
 

2193
00:49:58,450 --> 00:50:01,560
use that to reference another object in
this demo file note that is prefixed

2194
00:50:01,560 --> 00:50:01,570
this demo file note that is prefixed
 

2195
00:50:01,570 --> 00:50:04,260
this demo file note that is prefixed
with X which means this belongs to the

2196
00:50:04,260 --> 00:50:04,270
with X which means this belongs to the
 

2197
00:50:04,270 --> 00:50:06,720
with X which means this belongs to the
standards ammo that Microsoft introduced

2198
00:50:06,720 --> 00:50:06,730
standards ammo that Microsoft introduced
 

2199
00:50:06,730 --> 00:50:09,780
standards ammo that Microsoft introduced
in year 2009 if you work with other

2200
00:50:09,780 --> 00:50:09,790
in year 2009 if you work with other
 

2201
00:50:09,790 --> 00:50:11,970
in year 2009 if you work with other
saml-based frameworks like WPF or

2202
00:50:11,970 --> 00:50:11,980
saml-based frameworks like WPF or
 

2203
00:50:11,980 --> 00:50:15,600
saml-based frameworks like WPF or
Silverlight you would see this now after

2204
00:50:15,600 --> 00:50:15,610
Silverlight you would see this now after
 

2205
00:50:15,610 --> 00:50:18,900
Silverlight you would see this now after
X reference space we need to specify the

2206
00:50:18,900 --> 00:50:18,910
X reference space we need to specify the
 

2207
00:50:18,910 --> 00:50:21,740
X reference space we need to specify the
name of the target element in this case

2208
00:50:21,740 --> 00:50:21,750
name of the target element in this case
 

2209
00:50:21,750 --> 00:50:25,590
name of the target element in this case
slider and this is based on the value of

2210
00:50:25,590 --> 00:50:25,600
slider and this is based on the value of
 

2211
00:50:25,600 --> 00:50:28,590
slider and this is based on the value of
X name attribute all right so here's the

2212
00:50:28,590 --> 00:50:28,600
X name attribute all right so here's the
 

2213
00:50:28,600 --> 00:50:31,650
X name attribute all right so here's the
source object now what property of this

2214
00:50:31,650 --> 00:50:31,660
source object now what property of this
 

2215
00:50:31,660 --> 00:50:34,110
source object now what property of this
object are we interested in the value

2216
00:50:34,110 --> 00:50:34,120
object are we interested in the value
 

2217
00:50:34,120 --> 00:50:35,940
object are we interested in the value
property which represents the current

2218
00:50:35,940 --> 00:50:35,950
property which represents the current
 

2219
00:50:35,950 --> 00:50:36,510
property which represents the current
value

2220
00:50:36,510 --> 00:50:36,520
value
 

2221
00:50:36,520 --> 00:50:44,300
value
so after source comma path equals value

2222
00:50:44,300 --> 00:50:44,310
so after source comma path equals value
 

2223
00:50:44,310 --> 00:50:47,250
so after source comma path equals value
we call this path instead of property

2224
00:50:47,250 --> 00:50:47,260
we call this path instead of property
 

2225
00:50:47,260 --> 00:50:49,590
we call this path instead of property
because that property itself may be an

2226
00:50:49,590 --> 00:50:49,600
because that property itself may be an
 

2227
00:50:49,600 --> 00:50:51,840
because that property itself may be an
object and we may want to use the dot

2228
00:50:51,840 --> 00:50:51,850
object and we may want to use the dot
 

2229
00:50:51,850 --> 00:50:54,540
object and we may want to use the dot
notation to access another property like

2230
00:50:54,540 --> 00:50:54,550
notation to access another property like
 

2231
00:50:54,550 --> 00:50:56,880
notation to access another property like
a dot B dot C that's why it's called

2232
00:50:56,880 --> 00:50:56,890
a dot B dot C that's why it's called
 

2233
00:50:56,890 --> 00:50:59,670
a dot B dot C that's why it's called
path alright that's pretty much all we

2234
00:50:59,670 --> 00:50:59,680
path alright that's pretty much all we
 

2235
00:50:59,680 --> 00:51:03,830
path alright that's pretty much all we
have to write now if we run this app

2236
00:51:03,830 --> 00:51:03,840
have to write now if we run this app
 

2237
00:51:03,840 --> 00:51:07,610
have to write now if we run this app
this is what we get note the label

2238
00:51:07,610 --> 00:51:07,620
this is what we get note the label
 

2239
00:51:07,620 --> 00:51:10,290
this is what we get note the label
previously we formatted this number with

2240
00:51:10,290 --> 00:51:10,300
previously we formatted this number with
 

2241
00:51:10,300 --> 00:51:12,330
previously we formatted this number with
two digits after the decimal point so

2242
00:51:12,330 --> 00:51:12,340
two digits after the decimal point so
 

2243
00:51:12,340 --> 00:51:16,650
two digits after the decimal point so
let's go ahead and do this back here so

2244
00:51:16,650 --> 00:51:16,660
let's go ahead and do this back here so
 

2245
00:51:16,660 --> 00:51:18,900
let's go ahead and do this back here so
in our binding expression we have set up

2246
00:51:18,900 --> 00:51:18,910
in our binding expression we have set up
 

2247
00:51:18,910 --> 00:51:23,090
in our binding expression we have set up
source path and now the third property

2248
00:51:23,090 --> 00:51:23,100
source path and now the third property
 

2249
00:51:23,100 --> 00:51:28,110
source path and now the third property
string format equals and we use single

2250
00:51:28,110 --> 00:51:28,120
string format equals and we use single
 

2251
00:51:28,120 --> 00:51:30,750
string format equals and we use single
quote to differentiate from double

2252
00:51:30,750 --> 00:51:30,760
quote to differentiate from double
 

2253
00:51:30,760 --> 00:51:32,700
quote to differentiate from double
quotes for the value of the text

2254
00:51:32,700 --> 00:51:32,710
quotes for the value of the text
 

2255
00:51:32,710 --> 00:51:36,960
quotes for the value of the text
attribute now here we supply a standard

2256
00:51:36,960 --> 00:51:36,970
attribute now here we supply a standard
 

2257
00:51:36,970 --> 00:51:44,340
attribute now here we supply a standard
c-sharp string format so value is curly

2258
00:51:44,340 --> 00:51:44,350
c-sharp string format so value is curly
 

2259
00:51:44,350 --> 00:51:46,080
c-sharp string format so value is curly
braces zero represents the first

2260
00:51:46,080 --> 00:51:46,090
braces zero represents the first
 

2261
00:51:46,090 --> 00:51:50,490
braces zero represents the first
argument colon f2 for formatting

2262
00:51:50,490 --> 00:51:50,500
argument colon f2 for formatting
 

2263
00:51:50,500 --> 00:51:52,800
argument colon f2 for formatting
now let me break this up into multiple

2264
00:51:52,800 --> 00:51:52,810
now let me break this up into multiple
 

2265
00:51:52,810 --> 00:51:57,120
now let me break this up into multiple
lines okay this is cleaner and more

2266
00:51:57,120 --> 00:51:57,130
lines okay this is cleaner and more
 

2267
00:51:57,130 --> 00:51:59,460
lines okay this is cleaner and more
maintainable now let's run the

2268
00:51:59,460 --> 00:51:59,470
maintainable now let's run the
 

2269
00:51:59,470 --> 00:52:02,520
maintainable now let's run the
application again okay that's exactly

2270
00:52:02,520 --> 00:52:02,530
application again okay that's exactly
 

2271
00:52:02,530 --> 00:52:08,000
application again okay that's exactly
like before

2272
00:52:08,000 --> 00:52:08,010

 

2273
00:52:08,010 --> 00:52:09,990

now let's take this to the next level

2274
00:52:09,990 --> 00:52:10,000
now let's take this to the next level
 

2275
00:52:10,000 --> 00:52:12,930
now let's take this to the next level
what if we also want to bind the opacity

2276
00:52:12,930 --> 00:52:12,940
what if we also want to bind the opacity
 

2277
00:52:12,940 --> 00:52:15,360
what if we also want to bind the opacity
property of the label to the value of

2278
00:52:15,360 --> 00:52:15,370
property of the label to the value of
 

2279
00:52:15,370 --> 00:52:18,630
property of the label to the value of
the slider so let's try another binding

2280
00:52:18,630 --> 00:52:18,640
the slider so let's try another binding
 

2281
00:52:18,640 --> 00:52:25,080
the slider so let's try another binding
expression opacity we use curly braces

2282
00:52:25,080 --> 00:52:25,090
expression opacity we use curly braces
 

2283
00:52:25,090 --> 00:52:28,620
expression opacity we use curly braces
for markup extensions the first mark of

2284
00:52:28,620 --> 00:52:28,630
for markup extensions the first mark of
 

2285
00:52:28,630 --> 00:52:30,530
for markup extensions the first mark of
extension is binding

2286
00:52:30,530 --> 00:52:30,540
extension is binding
 

2287
00:52:30,540 --> 00:52:33,180
extension is binding
now here we need to specify the source

2288
00:52:33,180 --> 00:52:33,190
now here we need to specify the source
 

2289
00:52:33,190 --> 00:52:38,750
now here we need to specify the source
object equals another markup extension

2290
00:52:38,750 --> 00:52:38,760
object equals another markup extension
 

2291
00:52:38,760 --> 00:52:42,180
object equals another markup extension
we use ex reference to reference the

2292
00:52:42,180 --> 00:52:42,190
we use ex reference to reference the
 

2293
00:52:42,190 --> 00:52:47,790
we use ex reference to reference the
slider then we set the path to the value

2294
00:52:47,790 --> 00:52:47,800
slider then we set the path to the value
 

2295
00:52:47,800 --> 00:52:50,910
slider then we set the path to the value
property of the slider now we don't need

2296
00:52:50,910 --> 00:52:50,920
property of the slider now we don't need
 

2297
00:52:50,920 --> 00:52:53,130
property of the slider now we don't need
a string format because opacity is just

2298
00:52:53,130 --> 00:52:53,140
a string format because opacity is just
 

2299
00:52:53,140 --> 00:52:56,040
a string format because opacity is just
a number between 0 to 1 now let me run

2300
00:52:56,040 --> 00:52:56,050
a number between 0 to 1 now let me run
 

2301
00:52:56,050 --> 00:52:59,490
a number between 0 to 1 now let me run
this application and here's the result

2302
00:52:59,490 --> 00:52:59,500
this application and here's the result
 

2303
00:52:59,500 --> 00:53:01,680
this application and here's the result
note that the label is a little bit

2304
00:53:01,680 --> 00:53:01,690
note that the label is a little bit
 

2305
00:53:01,690 --> 00:53:04,710
note that the label is a little bit
grayed out and if we move this slider to

2306
00:53:04,710 --> 00:53:04,720
grayed out and if we move this slider to
 

2307
00:53:04,720 --> 00:53:07,920
grayed out and if we move this slider to
the left it becomes transparent or if we

2308
00:53:07,920 --> 00:53:07,930
the left it becomes transparent or if we
 

2309
00:53:07,930 --> 00:53:12,300
the left it becomes transparent or if we
go to the right it becomes opak but look

2310
00:53:12,300 --> 00:53:12,310
go to the right it becomes opak but look
 

2311
00:53:12,310 --> 00:53:14,970
go to the right it becomes opak but look
at our binding expression these bindings

2312
00:53:14,970 --> 00:53:14,980
at our binding expression these bindings
 

2313
00:53:14,980 --> 00:53:18,540
at our binding expression these bindings
are a little bit noisy in both cases you

2314
00:53:18,540 --> 00:53:18,550
are a little bit noisy in both cases you
 

2315
00:53:18,550 --> 00:53:20,040
are a little bit noisy in both cases you
are using the slider as the source

2316
00:53:20,040 --> 00:53:20,050
are using the slider as the source
 

2317
00:53:20,050 --> 00:53:22,560
are using the slider as the source
object so let me show you how to remove

2318
00:53:22,560 --> 00:53:22,570
object so let me show you how to remove
 

2319
00:53:22,570 --> 00:53:24,390
object so let me show you how to remove
this noise and make this code a little

2320
00:53:24,390 --> 00:53:24,400
this noise and make this code a little
 

2321
00:53:24,400 --> 00:53:28,800
this noise and make this code a little
bit cleaner and more maintainable we can

2322
00:53:28,800 --> 00:53:28,810
bit cleaner and more maintainable we can
 

2323
00:53:28,810 --> 00:53:31,470
bit cleaner and more maintainable we can
set the binding context attribute of the

2324
00:53:31,470 --> 00:53:31,480
set the binding context attribute of the
 

2325
00:53:31,480 --> 00:53:35,840
set the binding context attribute of the
label to our slider so again we use

2326
00:53:35,840 --> 00:53:35,850
label to our slider so again we use
 

2327
00:53:35,850 --> 00:53:42,570
label to our slider so again we use
markup extension X reference slider now

2328
00:53:42,570 --> 00:53:42,580
markup extension X reference slider now
 

2329
00:53:42,580 --> 00:53:44,970
markup extension X reference slider now
slider will be the source object for any

2330
00:53:44,970 --> 00:53:44,980
slider will be the source object for any
 

2331
00:53:44,980 --> 00:53:47,850
slider will be the source object for any
properties of the label which means in

2332
00:53:47,850 --> 00:53:47,860
properties of the label which means in
 

2333
00:53:47,860 --> 00:53:50,220
properties of the label which means in
our binding expressions for the text and

2334
00:53:50,220 --> 00:53:50,230
our binding expressions for the text and
 

2335
00:53:50,230 --> 00:53:52,410
our binding expressions for the text and
opacity properties we don't need to

2336
00:53:52,410 --> 00:53:52,420
opacity properties we don't need to
 

2337
00:53:52,420 --> 00:53:59,280
opacity properties we don't need to
repeat this line remove remove also we

2338
00:53:59,280 --> 00:53:59,290
repeat this line remove remove also we
 

2339
00:53:59,290 --> 00:54:00,600
repeat this line remove remove also we
can take this to the next level and

2340
00:54:00,600 --> 00:54:00,610
can take this to the next level and
 

2341
00:54:00,610 --> 00:54:03,480
can take this to the next level and
remove path equals value and just add

2342
00:54:03,480 --> 00:54:03,490
remove path equals value and just add
 

2343
00:54:03,490 --> 00:54:07,710
remove path equals value and just add
value like this so we can put this on

2344
00:54:07,710 --> 00:54:07,720
value like this so we can put this on
 

2345
00:54:07,720 --> 00:54:12,150
value like this so we can put this on
the same line binding to value and same

2346
00:54:12,150 --> 00:54:12,160
the same line binding to value and same
 

2347
00:54:12,160 --> 00:54:16,400
the same line binding to value and same
here

2348
00:54:16,400 --> 00:54:16,410

 

2349
00:54:16,410 --> 00:54:19,040

definitely cleaner now let's take this

2350
00:54:19,040 --> 00:54:19,050
definitely cleaner now let's take this
 

2351
00:54:19,050 --> 00:54:21,680
definitely cleaner now let's take this
to the next level I want to add a box

2352
00:54:21,680 --> 00:54:21,690
to the next level I want to add a box
 

2353
00:54:21,690 --> 00:54:24,860
to the next level I want to add a box
view the box view is a box filled with a

2354
00:54:24,860 --> 00:54:24,870
view the box view is a box filled with a
 

2355
00:54:24,870 --> 00:54:28,640
view the box view is a box filled with a
color so above the label I'm going to

2356
00:54:28,640 --> 00:54:28,650
color so above the label I'm going to
 

2357
00:54:28,650 --> 00:54:35,600
color so above the label I'm going to
add a box view set its color to let's

2358
00:54:35,600 --> 00:54:35,610
add a box view set its color to let's
 

2359
00:54:35,610 --> 00:54:38,720
add a box view set its color to let's
say green and again I want to bind its

2360
00:54:38,720 --> 00:54:38,730
say green and again I want to bind its
 

2361
00:54:38,730 --> 00:54:41,270
say green and again I want to bind its
opacity property to the value of the

2362
00:54:41,270 --> 00:54:41,280
opacity property to the value of the
 

2363
00:54:41,280 --> 00:54:45,980
opacity property to the value of the
slider so opacity equals markup

2364
00:54:45,980 --> 00:54:45,990
slider so opacity equals markup
 

2365
00:54:45,990 --> 00:54:49,930
slider so opacity equals markup
extension binding we set the source

2366
00:54:49,930 --> 00:54:49,940
extension binding we set the source
 

2367
00:54:49,940 --> 00:54:53,530
extension binding we set the source
another binding expression x reference

2368
00:54:53,530 --> 00:54:53,540
another binding expression x reference
 

2369
00:54:53,540 --> 00:55:01,190
another binding expression x reference
slider and pass a closed value let's run

2370
00:55:01,190 --> 00:55:01,200
slider and pass a closed value let's run
 

2371
00:55:01,200 --> 00:55:09,340
slider and pass a closed value let's run
this application okay here's the result

2372
00:55:09,340 --> 00:55:09,350

 

2373
00:55:09,350 --> 00:55:11,450

again you see there is a little bit of

2374
00:55:11,450 --> 00:55:11,460
again you see there is a little bit of
 

2375
00:55:11,460 --> 00:55:14,240
again you see there is a little bit of
duplication in this code both the box

2376
00:55:14,240 --> 00:55:14,250
duplication in this code both the box
 

2377
00:55:14,250 --> 00:55:16,880
duplication in this code both the box
view and the label are referencing the

2378
00:55:16,880 --> 00:55:16,890
view and the label are referencing the
 

2379
00:55:16,890 --> 00:55:20,150
view and the label are referencing the
slider as they're binding context so we

2380
00:55:20,150 --> 00:55:20,160
slider as they're binding context so we
 

2381
00:55:20,160 --> 00:55:22,700
slider as they're binding context so we
can basically move this binding context

2382
00:55:22,700 --> 00:55:22,710
can basically move this binding context
 

2383
00:55:22,710 --> 00:55:27,980
can basically move this binding context
set up from the label to our stack

2384
00:55:27,980 --> 00:55:27,990
set up from the label to our stack
 

2385
00:55:27,990 --> 00:55:31,100
set up from the label to our stack
layout the container for box view and

2386
00:55:31,100 --> 00:55:31,110
layout the container for box view and
 

2387
00:55:31,110 --> 00:55:34,820
layout the container for box view and
the label and this will be inherited by

2388
00:55:34,820 --> 00:55:34,830
the label and this will be inherited by
 

2389
00:55:34,830 --> 00:55:37,720
the label and this will be inherited by
all the elements inside stack layout

2390
00:55:37,720 --> 00:55:37,730
all the elements inside stack layout
 

2391
00:55:37,730 --> 00:55:40,430
all the elements inside stack layout
which means we can simplify this binding

2392
00:55:40,430 --> 00:55:40,440
which means we can simplify this binding
 

2393
00:55:40,440 --> 00:55:42,560
which means we can simplify this binding
expression for the opacity of the box

2394
00:55:42,560 --> 00:55:42,570
expression for the opacity of the box
 

2395
00:55:42,570 --> 00:55:51,620
expression for the opacity of the box
view remove the source and the path so

2396
00:55:51,620 --> 00:55:51,630
view remove the source and the path so
 

2397
00:55:51,630 --> 00:55:53,270
view remove the source and the path so
this is how we set up data binding

2398
00:55:53,270 --> 00:55:53,280
this is how we set up data binding
 

2399
00:55:53,280 --> 00:55:56,030
this is how we set up data binding
now finally we don't really need this X

2400
00:55:56,030 --> 00:55:56,040
now finally we don't really need this X
 

2401
00:55:56,040 --> 00:55:58,850
now finally we don't really need this X
name for the label because we have not

2402
00:55:58,850 --> 00:55:58,860
name for the label because we have not
 

2403
00:55:58,860 --> 00:56:00,830
name for the label because we have not
referenced it anywhere so we can delete

2404
00:56:00,830 --> 00:56:00,840
referenced it anywhere so we can delete
 

2405
00:56:00,840 --> 00:56:03,440
referenced it anywhere so we can delete
it all right next I'm going to show you

2406
00:56:03,440 --> 00:56:03,450
it all right next I'm going to show you
 

2407
00:56:03,450 --> 00:56:09,099
it all right next I'm going to show you
how to deal with device differences

2408
00:56:09,099 --> 00:56:09,109

 

2409
00:56:09,109 --> 00:56:11,299

all right now let me show you something

2410
00:56:11,299 --> 00:56:11,309
all right now let me show you something
 

2411
00:56:11,309 --> 00:56:14,719
all right now let me show you something
don't type anything just watch for the

2412
00:56:14,719 --> 00:56:14,729
don't type anything just watch for the
 

2413
00:56:14,729 --> 00:56:16,719
don't type anything just watch for the
stack layout I'm going to remove

2414
00:56:16,719 --> 00:56:16,729
stack layout I'm going to remove
 

2415
00:56:16,729 --> 00:56:20,479
stack layout I'm going to remove
vertical options attribute let's run

2416
00:56:20,479 --> 00:56:20,489
vertical options attribute let's run
 

2417
00:56:20,489 --> 00:56:22,459
vertical options attribute let's run
this application in Android and see what

2418
00:56:22,459 --> 00:56:22,469
this application in Android and see what
 

2419
00:56:22,469 --> 00:56:25,339
this application in Android and see what
happens

2420
00:56:25,339 --> 00:56:25,349

 

2421
00:56:25,349 --> 00:56:27,709

okay this is what we get note that the

2422
00:56:27,709 --> 00:56:27,719
okay this is what we get note that the
 

2423
00:56:27,719 --> 00:56:30,019
okay this is what we get note that the
box view is on top of the page just

2424
00:56:30,019 --> 00:56:30,029
box view is on top of the page just
 

2425
00:56:30,029 --> 00:56:33,349
box view is on top of the page just
below the blue bar now I'm going to run

2426
00:56:33,349 --> 00:56:33,359
below the blue bar now I'm going to run
 

2427
00:56:33,359 --> 00:56:37,640
below the blue bar now I'm going to run
the same app in iOS

2428
00:56:37,640 --> 00:56:37,650

 

2429
00:56:37,650 --> 00:56:40,759

okay and this is what we get again note

2430
00:56:40,759 --> 00:56:40,769
okay and this is what we get again note
 

2431
00:56:40,769 --> 00:56:44,329
okay and this is what we get again note
where the box view is located in Android

2432
00:56:44,329 --> 00:56:44,339
where the box view is located in Android
 

2433
00:56:44,339 --> 00:56:47,299
where the box view is located in Android
our page started right below the blue

2434
00:56:47,299 --> 00:56:47,309
our page started right below the blue
 

2435
00:56:47,309 --> 00:56:50,509
our page started right below the blue
bar but in iOS our page starts right

2436
00:56:50,509 --> 00:56:50,519
bar but in iOS our page starts right
 

2437
00:56:50,519 --> 00:56:53,390
bar but in iOS our page starts right
from top of the screen so if you had

2438
00:56:53,390 --> 00:56:53,400
from top of the screen so if you had
 

2439
00:56:53,400 --> 00:56:55,880
from top of the screen so if you had
some text here instead of box view that

2440
00:56:55,880 --> 00:56:55,890
some text here instead of box view that
 

2441
00:56:55,890 --> 00:56:58,420
some text here instead of box view that
text would clash with the current time

2442
00:56:58,420 --> 00:56:58,430
text would clash with the current time
 

2443
00:56:58,430 --> 00:57:00,410
text would clash with the current time
so this is one of the key differences

2444
00:57:00,410 --> 00:57:00,420
so this is one of the key differences
 

2445
00:57:00,420 --> 00:57:03,170
so this is one of the key differences
between Android and iOS in this video

2446
00:57:03,170 --> 00:57:03,180
between Android and iOS in this video
 

2447
00:57:03,180 --> 00:57:04,640
between Android and iOS in this video
I'm going to show you how to add some

2448
00:57:04,640 --> 00:57:04,650
I'm going to show you how to add some
 

2449
00:57:04,650 --> 00:57:07,160
I'm going to show you how to add some
padding to top of the page but only in

2450
00:57:07,160 --> 00:57:07,170
padding to top of the page but only in
 

2451
00:57:07,170 --> 00:57:07,930
padding to top of the page but only in
iOS

2452
00:57:07,930 --> 00:57:07,940
iOS
 

2453
00:57:07,940 --> 00:57:11,930
iOS
so back in xamarin studio in this video

2454
00:57:11,930 --> 00:57:11,940
so back in xamarin studio in this video
 

2455
00:57:11,940 --> 00:57:13,249
so back in xamarin studio in this video
i'm going to show you how to do this in

2456
00:57:13,249 --> 00:57:13,259
i'm going to show you how to do this in
 

2457
00:57:13,259 --> 00:57:15,410
i'm going to show you how to do this in
code-behind and then in the next video i

2458
00:57:15,410 --> 00:57:15,420
code-behind and then in the next video i
 

2459
00:57:15,420 --> 00:57:16,999
code-behind and then in the next video i
will teach you how to achieve the same

2460
00:57:16,999 --> 00:57:17,009
will teach you how to achieve the same
 

2461
00:57:17,009 --> 00:57:19,039
will teach you how to achieve the same
thing in zamel the reason I want to

2462
00:57:19,039 --> 00:57:19,049
thing in zamel the reason I want to
 

2463
00:57:19,049 --> 00:57:21,079
thing in zamel the reason I want to
introduce you to code behind is so that

2464
00:57:21,079 --> 00:57:21,089
introduce you to code behind is so that
 

2465
00:57:21,089 --> 00:57:22,759
introduce you to code behind is so that
you have better understanding of what

2466
00:57:22,759 --> 00:57:22,769
you have better understanding of what
 

2467
00:57:22,769 --> 00:57:27,650
you have better understanding of what
happens under the hood so we have this

2468
00:57:27,650 --> 00:57:27,660
happens under the hood so we have this
 

2469
00:57:27,660 --> 00:57:31,400
happens under the hood so we have this
class called device and this has a

2470
00:57:31,400 --> 00:57:31,410
class called device and this has a
 

2471
00:57:31,410 --> 00:57:34,880
class called device and this has a
static property called OS which is an

2472
00:57:34,880 --> 00:57:34,890
static property called OS which is an
 

2473
00:57:34,890 --> 00:57:38,960
static property called OS which is an
enumeration of type target platform so

2474
00:57:38,960 --> 00:57:38,970
enumeration of type target platform so
 

2475
00:57:38,970 --> 00:57:44,109
enumeration of type target platform so
we can check if target platform is iOS

2476
00:57:44,109 --> 00:57:44,119
we can check if target platform is iOS
 

2477
00:57:44,119 --> 00:57:47,359
we can check if target platform is iOS
then we set padding of the page which we

2478
00:57:47,359 --> 00:57:47,369
then we set padding of the page which we
 

2479
00:57:47,369 --> 00:57:51,190
then we set padding of the page which we
inherit from content page class to a new

2480
00:57:51,190 --> 00:57:51,200
inherit from content page class to a new
 

2481
00:57:51,200 --> 00:57:54,650
inherit from content page class to a new
thickness object thickness has a few

2482
00:57:54,650 --> 00:57:54,660
thickness object thickness has a few
 

2483
00:57:54,660 --> 00:57:56,660
thickness object thickness has a few
different constructors and the one I'm

2484
00:57:56,660 --> 00:57:56,670
different constructors and the one I'm
 

2485
00:57:56,670 --> 00:57:58,960
different constructors and the one I'm
going to use now takes four arguments

2486
00:57:58,960 --> 00:57:58,970
going to use now takes four arguments
 

2487
00:57:58,970 --> 00:58:03,440
going to use now takes four arguments
left top right and bottom it's good to

2488
00:58:03,440 --> 00:58:03,450
left top right and bottom it's good to
 

2489
00:58:03,450 --> 00:58:04,999
left top right and bottom it's good to
remember this order because you're going

2490
00:58:04,999 --> 00:58:05,009
remember this order because you're going
 

2491
00:58:05,009 --> 00:58:10,489
remember this order because you're going
to use this a lot so left 0 top 20 0 and

2492
00:58:10,489 --> 00:58:10,499
to use this a lot so left 0 top 20 0 and
 

2493
00:58:10,499 --> 00:58:14,420
to use this a lot so left 0 top 20 0 and
0 so with iOS we always want to add 20

2494
00:58:14,420 --> 00:58:14,430
0 so with iOS we always want to add 20
 

2495
00:58:14,430 --> 00:58:17,690
0 so with iOS we always want to add 20
pixels on top of our page so the content

2496
00:58:17,690 --> 00:58:17,700
pixels on top of our page so the content
 

2497
00:58:17,700 --> 00:58:19,999
pixels on top of our page so the content
of the page does not clash with the

2498
00:58:19,999 --> 00:58:20,009
of the page does not clash with the
 

2499
00:58:20,009 --> 00:58:23,870
of the page does not clash with the
standard bar on top of the screen now

2500
00:58:23,870 --> 00:58:23,880
standard bar on top of the screen now
 

2501
00:58:23,880 --> 00:58:25,460
standard bar on top of the screen now
even though this code is perfectly fine

2502
00:58:25,460 --> 00:58:25,470
even though this code is perfectly fine
 

2503
00:58:25,470 --> 00:58:27,440
even though this code is perfectly fine
let's just assume you want to have

2504
00:58:27,440 --> 00:58:27,450
let's just assume you want to have
 

2505
00:58:27,450 --> 00:58:29,630
let's just assume you want to have
different padding's for android and

2506
00:58:29,630 --> 00:58:29,640
different padding's for android and
 

2507
00:58:29,640 --> 00:58:32,749
different padding's for android and
windows so if you want to use the same

2508
00:58:32,749 --> 00:58:32,759
windows so if you want to use the same
 

2509
00:58:32,759 --> 00:58:34,789
windows so if you want to use the same
technique you would end up writing code

2510
00:58:34,789 --> 00:58:34,799
technique you would end up writing code
 

2511
00:58:34,799 --> 00:58:40,160
technique you would end up writing code
like this else if device that OS equals

2512
00:58:40,160 --> 00:58:40,170
like this else if device that OS equals
 

2513
00:58:40,170 --> 00:58:44,849
like this else if device that OS equals
target platform Android something

2514
00:58:44,849 --> 00:58:44,859
target platform Android something
 

2515
00:58:44,859 --> 00:58:47,130
target platform Android something
like this now don't worry about these

2516
00:58:47,130 --> 00:58:47,140
like this now don't worry about these
 

2517
00:58:47,140 --> 00:58:49,769
like this now don't worry about these
numbers these are just arbitrary now I

2518
00:58:49,769 --> 00:58:49,779
numbers these are just arbitrary now I
 

2519
00:58:49,779 --> 00:58:51,690
numbers these are just arbitrary now I
want to show you a cleaner way to write

2520
00:58:51,690 --> 00:58:51,700
want to show you a cleaner way to write
 

2521
00:58:51,700 --> 00:58:54,569
want to show you a cleaner way to write
the exact same code this device class

2522
00:58:54,569 --> 00:58:54,579
the exact same code this device class
 

2523
00:58:54,579 --> 00:58:56,519
the exact same code this device class
has a method called

2524
00:58:56,519 --> 00:58:56,529
has a method called
 

2525
00:58:56,529 --> 00:59:00,479
has a method called
on platform and this method has to

2526
00:59:00,479 --> 00:59:00,489
on platform and this method has to
 

2527
00:59:00,489 --> 00:59:03,299
on platform and this method has to
overload one that is generic as you see

2528
00:59:03,299 --> 00:59:03,309
overload one that is generic as you see
 

2529
00:59:03,309 --> 00:59:06,479
overload one that is generic as you see
here and the other that takes actions

2530
00:59:06,479 --> 00:59:06,489
here and the other that takes actions
 

2531
00:59:06,489 --> 00:59:08,220
here and the other that takes actions
I'm going to start with the generic one

2532
00:59:08,220 --> 00:59:08,230
I'm going to start with the generic one
 

2533
00:59:08,230 --> 00:59:10,249
I'm going to start with the generic one
because it's easier to understand

2534
00:59:10,249 --> 00:59:10,259
because it's easier to understand
 

2535
00:59:10,259 --> 00:59:13,140
because it's easier to understand
so we supply the generic parameter in

2536
00:59:13,140 --> 00:59:13,150
so we supply the generic parameter in
 

2537
00:59:13,150 --> 00:59:15,660
so we supply the generic parameter in
this case I want different thickness

2538
00:59:15,660 --> 00:59:15,670
this case I want different thickness
 

2539
00:59:15,670 --> 00:59:18,420
this case I want different thickness
objects for different platforms so the

2540
00:59:18,420 --> 00:59:18,430
objects for different platforms so the
 

2541
00:59:18,430 --> 00:59:22,049
objects for different platforms so the
generic parameter is thickness now we

2542
00:59:22,049 --> 00:59:22,059
generic parameter is thickness now we
 

2543
00:59:22,059 --> 00:59:23,999
generic parameter is thickness now we
can supply different thickness objects

2544
00:59:23,999 --> 00:59:24,009
can supply different thickness objects
 

2545
00:59:24,009 --> 00:59:26,309
can supply different thickness objects
for different platforms and to make the

2546
00:59:26,309 --> 00:59:26,319
for different platforms and to make the
 

2547
00:59:26,319 --> 00:59:28,589
for different platforms and to make the
code cleaner we can use name parameters

2548
00:59:28,589 --> 00:59:28,599
code cleaner we can use name parameters
 

2549
00:59:28,599 --> 00:59:40,319
code cleaner we can use name parameters
in c-sharp so i OS new thickness also

2550
00:59:40,319 --> 00:59:40,329
in c-sharp so i OS new thickness also
 

2551
00:59:40,329 --> 00:59:41,759
in c-sharp so i OS new thickness also
you can see that thickness here is

2552
00:59:41,759 --> 00:59:41,769
you can see that thickness here is
 

2553
00:59:41,769 --> 00:59:44,190
you can see that thickness here is
grayed out so we can refactor this code

2554
00:59:44,190 --> 00:59:44,200
grayed out so we can refactor this code
 

2555
00:59:44,200 --> 00:59:49,920
grayed out so we can refactor this code
and remove it now compare this code with

2556
00:59:49,920 --> 00:59:49,930
and remove it now compare this code with
 

2557
00:59:49,930 --> 00:59:52,410
and remove it now compare this code with
what we wrote earlier we don't have all

2558
00:59:52,410 --> 00:59:52,420
what we wrote earlier we don't have all
 

2559
00:59:52,420 --> 00:59:55,559
what we wrote earlier we don't have all
these if else if else if the code is

2560
00:59:55,559 --> 00:59:55,569
these if else if else if the code is
 

2561
00:59:55,569 --> 00:59:59,579
these if else if else if the code is
cleaner and more focused so internally

2562
00:59:59,579 --> 00:59:59,589
cleaner and more focused so internally
 

2563
00:59:59,589 --> 01:00:02,220
cleaner and more focused so internally
in this method on platform you're

2564
01:00:02,220 --> 01:00:02,230
in this method on platform you're
 

2565
01:00:02,230 --> 01:00:03,839
in this method on platform you're
actually going to have code like what

2566
01:00:03,839 --> 01:00:03,849
actually going to have code like what
 

2567
01:00:03,849 --> 01:00:05,999
actually going to have code like what
you see on the top so this method takes

2568
01:00:05,999 --> 01:00:06,009
you see on the top so this method takes
 

2569
01:00:06,009 --> 01:00:08,009
you see on the top so this method takes
care of all these conditional statements

2570
01:00:08,009 --> 01:00:08,019
care of all these conditional statements
 

2571
01:00:08,019 --> 01:00:10,799
care of all these conditional statements
and returns the proper thickness object

2572
01:00:10,799 --> 01:00:10,809
and returns the proper thickness object
 

2573
01:00:10,809 --> 01:00:14,099
and returns the proper thickness object
based on the current operating system so

2574
01:00:14,099 --> 01:00:14,109
based on the current operating system so
 

2575
01:00:14,109 --> 01:00:16,019
based on the current operating system so
then we can get the result from this

2576
01:00:16,019 --> 01:00:16,029
then we can get the result from this
 

2577
01:00:16,029 --> 01:00:20,940
then we can get the result from this
method and assign it to padding we can

2578
01:00:20,940 --> 01:00:20,950
method and assign it to padding we can
 

2579
01:00:20,950 --> 01:00:22,950
method and assign it to padding we can
use this on platform method with pretty

2580
01:00:22,950 --> 01:00:22,960
use this on platform method with pretty
 

2581
01:00:22,960 --> 01:00:25,079
use this on platform method with pretty
much any objects in this case we are

2582
01:00:25,079 --> 01:00:25,089
much any objects in this case we are
 

2583
01:00:25,089 --> 01:00:27,479
much any objects in this case we are
interested in thickness in your

2584
01:00:27,479 --> 01:00:27,489
interested in thickness in your
 

2585
01:00:27,489 --> 01:00:29,460
interested in thickness in your
applications you might be interested on

2586
01:00:29,460 --> 01:00:29,470
applications you might be interested on
 

2587
01:00:29,470 --> 01:00:31,710
applications you might be interested on
an integer being different across

2588
01:00:31,710 --> 01:00:31,720
an integer being different across
 

2589
01:00:31,720 --> 01:00:33,569
an integer being different across
different platforms then you would

2590
01:00:33,569 --> 01:00:33,579
different platforms then you would
 

2591
01:00:33,579 --> 01:00:37,650
different platforms then you would
supply three integer arguments now as I

2592
01:00:37,650 --> 01:00:37,660
supply three integer arguments now as I
 

2593
01:00:37,660 --> 01:00:39,749
supply three integer arguments now as I
explained earlier this on platform

2594
01:00:39,749 --> 01:00:39,759
explained earlier this on platform
 

2595
01:00:39,759 --> 01:00:42,509
explained earlier this on platform
method also has a non-generic overload

2596
01:00:42,509 --> 01:00:42,519
method also has a non-generic overload
 

2597
01:00:42,519 --> 01:00:47,370
method also has a non-generic overload
let me show you how that one works so

2598
01:00:47,370 --> 01:00:47,380
let me show you how that one works so
 

2599
01:00:47,380 --> 01:00:50,700
let me show you how that one works so
the device that on platform

2600
01:00:50,700 --> 01:00:50,710
the device that on platform
 

2601
01:00:50,710 --> 01:00:52,200
the device that on platform
I'm going to use the non-generic

2602
01:00:52,200 --> 01:00:52,210
I'm going to use the non-generic
 

2603
01:00:52,210 --> 01:00:54,840
I'm going to use the non-generic
overload you can see here we have four

2604
01:00:54,840 --> 01:00:54,850
overload you can see here we have four
 

2605
01:00:54,850 --> 01:00:57,480
overload you can see here we have four
parameters and they all are optional

2606
01:00:57,480 --> 01:00:57,490
parameters and they all are optional
 

2607
01:00:57,490 --> 01:01:00,420
parameters and they all are optional
because they are set to null so let's

2608
01:01:00,420 --> 01:01:00,430
because they are set to null so let's
 

2609
01:01:00,430 --> 01:01:02,700
because they are set to null so let's
say I want to execute some code only on

2610
01:01:02,700 --> 01:01:02,710
say I want to execute some code only on
 

2611
01:01:02,710 --> 01:01:06,870
say I want to execute some code only on
iOS then I can supply the name parameter

2612
01:01:06,870 --> 01:01:06,880
iOS then I can supply the name parameter
 

2613
01:01:06,880 --> 01:01:10,830
iOS then I can supply the name parameter
here iOS and here I need to specify an

2614
01:01:10,830 --> 01:01:10,840
here iOS and here I need to specify an
 

2615
01:01:10,840 --> 01:01:13,170
here iOS and here I need to specify an
action so I'm going to use a lambda

2616
01:01:13,170 --> 01:01:13,180
action so I'm going to use a lambda
 

2617
01:01:13,180 --> 01:01:17,940
action so I'm going to use a lambda
expression for that like this now if

2618
01:01:17,940 --> 01:01:17,950
expression for that like this now if
 

2619
01:01:17,950 --> 01:01:19,560
expression for that like this now if
you're not sure what this all means you

2620
01:01:19,560 --> 01:01:19,570
you're not sure what this all means you
 

2621
01:01:19,570 --> 01:01:21,330
you're not sure what this all means you
really need to watch my C sharp Advanced

2622
01:01:21,330 --> 01:01:21,340
really need to watch my C sharp Advanced
 

2623
01:01:21,340 --> 01:01:23,430
really need to watch my C sharp Advanced
Course because I've talked a lot about

2624
01:01:23,430 --> 01:01:23,440
Course because I've talked a lot about
 

2625
01:01:23,440 --> 01:01:27,120
Course because I've talked a lot about
lambda expressions and actions there so

2626
01:01:27,120 --> 01:01:27,130
lambda expressions and actions there so
 

2627
01:01:27,130 --> 01:01:28,980
lambda expressions and actions there so
here in this block we can write the code

2628
01:01:28,980 --> 01:01:28,990
here in this block we can write the code
 

2629
01:01:28,990 --> 01:01:33,000
here in this block we can write the code
that we want to be executed on iOS for

2630
01:01:33,000 --> 01:01:33,010
that we want to be executed on iOS for
 

2631
01:01:33,010 --> 01:01:36,120
that we want to be executed on iOS for
example we can set padding to thickness

2632
01:01:36,120 --> 01:01:36,130
example we can set padding to thickness
 

2633
01:01:36,130 --> 01:01:39,640
example we can set padding to thickness
object

2634
01:01:39,640 --> 01:01:39,650

 

2635
01:01:39,650 --> 01:01:41,710

this is another way to set the padding

2636
01:01:41,710 --> 01:01:41,720
this is another way to set the padding
 

2637
01:01:41,720 --> 01:01:45,790
this is another way to set the padding
property also for discussions sake let's

2638
01:01:45,790 --> 01:01:45,800
property also for discussions sake let's
 

2639
01:01:45,800 --> 01:01:47,380
property also for discussions sake let's
say we want to have a different piece of

2640
01:01:47,380 --> 01:01:47,390
say we want to have a different piece of
 

2641
01:01:47,390 --> 01:01:51,640
say we want to have a different piece of
code to be executed on Android then we

2642
01:01:51,640 --> 01:01:51,650
code to be executed on Android then we
 

2643
01:01:51,650 --> 01:01:55,480
code to be executed on Android then we
set the name parameter action use a

2644
01:01:55,480 --> 01:01:55,490
set the name parameter action use a
 

2645
01:01:55,490 --> 01:01:59,800
set the name parameter action use a
lambda expression and here we write the

2646
01:01:59,800 --> 01:01:59,810
lambda expression and here we write the
 

2647
01:01:59,810 --> 01:02:02,980
lambda expression and here we write the
Android specific code so this is how we

2648
01:02:02,980 --> 01:02:02,990
Android specific code so this is how we
 

2649
01:02:02,990 --> 01:02:05,560
Android specific code so this is how we
use device done on platform method

2650
01:02:05,560 --> 01:02:05,570
use device done on platform method
 

2651
01:02:05,570 --> 01:02:07,690
use device done on platform method
whether the generic overload or the non

2652
01:02:07,690 --> 01:02:07,700
whether the generic overload or the non
 

2653
01:02:07,700 --> 01:02:11,620
whether the generic overload or the non
generic one as I explained before we aim

2654
01:02:11,620 --> 01:02:11,630
generic one as I explained before we aim
 

2655
01:02:11,630 --> 01:02:13,960
generic one as I explained before we aim
to use zamel to define the visual

2656
01:02:13,960 --> 01:02:13,970
to use zamel to define the visual
 

2657
01:02:13,970 --> 01:02:16,720
to use zamel to define the visual
appearance of our applications so in the

2658
01:02:16,720 --> 01:02:16,730
appearance of our applications so in the
 

2659
01:02:16,730 --> 01:02:18,610
appearance of our applications so in the
next lecture I'm going to show you how

2660
01:02:18,610 --> 01:02:18,620
next lecture I'm going to show you how
 

2661
01:02:18,620 --> 01:02:23,770
next lecture I'm going to show you how
to use on platform in Java

2662
01:02:23,770 --> 01:02:23,780

 

2663
01:02:23,780 --> 01:02:25,780

all right now let's see how we can set

2664
01:02:25,780 --> 01:02:25,790
all right now let's see how we can set
 

2665
01:02:25,790 --> 01:02:29,050
all right now let's see how we can set
padding using zamel so in the last

2666
01:02:29,050 --> 01:02:29,060
padding using zamel so in the last
 

2667
01:02:29,060 --> 01:02:31,480
padding using zamel so in the last
lecture you learn that padding is a

2668
01:02:31,480 --> 01:02:31,490
lecture you learn that padding is a
 

2669
01:02:31,490 --> 01:02:33,790
lecture you learn that padding is a
property of the page and we can set it

2670
01:02:33,790 --> 01:02:33,800
property of the page and we can set it
 

2671
01:02:33,800 --> 01:02:37,890
property of the page and we can set it
to a thickness object like this and

2672
01:02:37,890 --> 01:02:37,900
to a thickness object like this and
 

2673
01:02:37,900 --> 01:02:40,920
to a thickness object like this and
obviously this applies to all platforms

2674
01:02:40,920 --> 01:02:40,930
obviously this applies to all platforms
 

2675
01:02:40,930 --> 01:02:43,810
obviously this applies to all platforms
now if you want to apply this padding

2676
01:02:43,810 --> 01:02:43,820
now if you want to apply this padding
 

2677
01:02:43,820 --> 01:02:47,500
now if you want to apply this padding
using zamel we can easily do so like

2678
01:02:47,500 --> 01:02:47,510
using zamel we can easily do so like
 

2679
01:02:47,510 --> 01:02:52,060
using zamel we can easily do so like
this so for our content page element we

2680
01:02:52,060 --> 01:02:52,070
this so for our content page element we
 

2681
01:02:52,070 --> 01:02:54,400
this so for our content page element we
set the padding attribute to a string

2682
01:02:54,400 --> 01:02:54,410
set the padding attribute to a string
 

2683
01:02:54,410 --> 01:03:00,490
set the padding attribute to a string
literal now at runtime zamel parser will

2684
01:03:00,490 --> 01:03:00,500
literal now at runtime zamel parser will
 

2685
01:03:00,500 --> 01:03:02,740
literal now at runtime zamel parser will
get this string and give it to a type

2686
01:03:02,740 --> 01:03:02,750
get this string and give it to a type
 

2687
01:03:02,750 --> 01:03:05,110
get this string and give it to a type
converter which will parse this into a

2688
01:03:05,110 --> 01:03:05,120
converter which will parse this into a
 

2689
01:03:05,120 --> 01:03:08,170
converter which will parse this into a
thickness object and again this will

2690
01:03:08,170 --> 01:03:08,180
thickness object and again this will
 

2691
01:03:08,180 --> 01:03:11,200
thickness object and again this will
apply to all platforms now what if you

2692
01:03:11,200 --> 01:03:11,210
apply to all platforms now what if you
 

2693
01:03:11,210 --> 01:03:14,410
apply to all platforms now what if you
want to apply this only to iOS then we

2694
01:03:14,410 --> 01:03:14,420
want to apply this only to iOS then we
 

2695
01:03:14,420 --> 01:03:16,270
want to apply this only to iOS then we
need to use an element called on

2696
01:03:16,270 --> 01:03:16,280
need to use an element called on
 

2697
01:03:16,280 --> 01:03:22,570
need to use an element called on
platform on platform and this element

2698
01:03:22,570 --> 01:03:22,580
platform on platform and this element
 

2699
01:03:22,580 --> 01:03:26,950
platform on platform and this element
has attributes like iOS Android and so

2700
01:03:26,950 --> 01:03:26,960
has attributes like iOS Android and so
 

2701
01:03:26,960 --> 01:03:30,040
has attributes like iOS Android and so
on but the problem is we cannot use this

2702
01:03:30,040 --> 01:03:30,050
on but the problem is we cannot use this
 

2703
01:03:30,050 --> 01:03:32,440
on but the problem is we cannot use this
element as the value of the padding

2704
01:03:32,440 --> 01:03:32,450
element as the value of the padding
 

2705
01:03:32,450 --> 01:03:34,930
element as the value of the padding
attribute because these values as you

2706
01:03:34,930 --> 01:03:34,940
attribute because these values as you
 

2707
01:03:34,940 --> 01:03:37,060
attribute because these values as you
have seen so far are either simple

2708
01:03:37,060 --> 01:03:37,070
have seen so far are either simple
 

2709
01:03:37,070 --> 01:03:39,820
have seen so far are either simple
strings or zamel markup extensions but

2710
01:03:39,820 --> 01:03:39,830
strings or zamel markup extensions but
 

2711
01:03:39,830 --> 01:03:42,730
strings or zamel markup extensions but
they cannot be an XML element that's

2712
01:03:42,730 --> 01:03:42,740
they cannot be an XML element that's
 

2713
01:03:42,740 --> 01:03:44,920
they cannot be an XML element that's
when we use a special syntax in demo

2714
01:03:44,920 --> 01:03:44,930
when we use a special syntax in demo
 

2715
01:03:44,930 --> 01:03:48,580
when we use a special syntax in demo
called property element syntax let me

2716
01:03:48,580 --> 01:03:48,590
called property element syntax let me
 

2717
01:03:48,590 --> 01:03:49,390
called property element syntax let me
show you how it works

2718
01:03:49,390 --> 01:03:49,400
show you how it works
 

2719
01:03:49,400 --> 01:03:51,910
show you how it works
so first I'm going to remove this

2720
01:03:51,910 --> 01:03:51,920
so first I'm going to remove this
 

2721
01:03:51,920 --> 01:03:55,900
so first I'm going to remove this
attribute now inside content page

2722
01:03:55,900 --> 01:03:55,910
attribute now inside content page
 

2723
01:03:55,910 --> 01:03:58,690
attribute now inside content page
element I'm going to add another element

2724
01:03:58,690 --> 01:03:58,700
element I'm going to add another element
 

2725
01:03:58,700 --> 01:04:05,170
element I'm going to add another element
content page dot padding so I'm using an

2726
01:04:05,170 --> 01:04:05,180
content page dot padding so I'm using an
 

2727
01:04:05,180 --> 01:04:08,050
content page dot padding so I'm using an
XML element instead of an XML attribute

2728
01:04:08,050 --> 01:04:08,060
XML element instead of an XML attribute
 

2729
01:04:08,060 --> 01:04:10,870
XML element instead of an XML attribute
to set the padding property and that's

2730
01:04:10,870 --> 01:04:10,880
to set the padding property and that's
 

2731
01:04:10,880 --> 01:04:12,700
to set the padding property and that's
the reason this syntax is called

2732
01:04:12,700 --> 01:04:12,710
the reason this syntax is called
 

2733
01:04:12,710 --> 01:04:16,270
the reason this syntax is called
property element syntax because we set C

2734
01:04:16,270 --> 01:04:16,280
property element syntax because we set C
 

2735
01:04:16,280 --> 01:04:19,270
property element syntax because we set C
char properties using XML elements not

2736
01:04:19,270 --> 01:04:19,280
char properties using XML elements not
 

2737
01:04:19,280 --> 01:04:22,870
char properties using XML elements not
attributes now inside this element I can

2738
01:04:22,870 --> 01:04:22,880
attributes now inside this element I can
 

2739
01:04:22,880 --> 01:04:25,770
attributes now inside this element I can
either add a simple string

2740
01:04:25,770 --> 01:04:25,780
either add a simple string
 

2741
01:04:25,780 --> 01:04:28,890
either add a simple string
or I can add another element to

2742
01:04:28,890 --> 01:04:28,900
or I can add another element to
 

2743
01:04:28,900 --> 01:04:31,650
or I can add another element to
represent a complex object in this case

2744
01:04:31,650 --> 01:04:31,660
represent a complex object in this case
 

2745
01:04:31,660 --> 01:04:35,120
represent a complex object in this case
I want to use on platform element so I

2746
01:04:35,120 --> 01:04:35,130
I want to use on platform element so I
 

2747
01:04:35,130 --> 01:04:38,810
I want to use on platform element so I
can take this here and move it

2748
01:04:38,810 --> 01:04:38,820
can take this here and move it
 

2749
01:04:38,820 --> 01:04:43,200
can take this here and move it
right here now this on platform element

2750
01:04:43,200 --> 01:04:43,210
right here now this on platform element
 

2751
01:04:43,210 --> 01:04:46,310
right here now this on platform element
maps to a c-sharp class let me show you

2752
01:04:46,310 --> 01:04:46,320
maps to a c-sharp class let me show you
 

2753
01:04:46,320 --> 01:04:49,830
maps to a c-sharp class let me show you
so back in code behind I'm just going to

2754
01:04:49,830 --> 01:04:49,840
so back in code behind I'm just going to
 

2755
01:04:49,840 --> 01:04:52,980
so back in code behind I'm just going to
declare a temporary variable new on

2756
01:04:52,980 --> 01:04:52,990
declare a temporary variable new on
 

2757
01:04:52,990 --> 01:04:56,790
declare a temporary variable new on
platform so this is a generic class and

2758
01:04:56,790 --> 01:04:56,800
platform so this is a generic class and
 

2759
01:04:56,800 --> 01:04:59,010
platform so this is a generic class and
here we need to supply the generic

2760
01:04:59,010 --> 01:04:59,020
here we need to supply the generic
 

2761
01:04:59,020 --> 01:05:01,710
here we need to supply the generic
parameter so I'm going to use thickness

2762
01:05:01,710 --> 01:05:01,720
parameter so I'm going to use thickness
 

2763
01:05:01,720 --> 01:05:06,870
parameter so I'm going to use thickness
here now this class has properties like

2764
01:05:06,870 --> 01:05:06,880
here now this class has properties like
 

2765
01:05:06,880 --> 01:05:13,290
here now this class has properties like
Android iOS and so on now I can get this

2766
01:05:13,290 --> 01:05:13,300
Android iOS and so on now I can get this
 

2767
01:05:13,300 --> 01:05:15,780
Android iOS and so on now I can get this
on platform object and assign it to

2768
01:05:15,780 --> 01:05:15,790
on platform object and assign it to
 

2769
01:05:15,790 --> 01:05:18,330
on platform object and assign it to
padding there will be an implicit

2770
01:05:18,330 --> 01:05:18,340
padding there will be an implicit
 

2771
01:05:18,340 --> 01:05:20,670
padding there will be an implicit
conversion between on platform object

2772
01:05:20,670 --> 01:05:20,680
conversion between on platform object
 

2773
01:05:20,680 --> 01:05:24,960
conversion between on platform object
and thickness object okay so we want to

2774
01:05:24,960 --> 01:05:24,970
and thickness object okay so we want to
 

2775
01:05:24,970 --> 01:05:28,140
and thickness object okay so we want to
achieve the same thing in samo when

2776
01:05:28,140 --> 01:05:28,150
achieve the same thing in samo when
 

2777
01:05:28,150 --> 01:05:30,570
achieve the same thing in samo when
creating this on platform object we need

2778
01:05:30,570 --> 01:05:30,580
creating this on platform object we need
 

2779
01:05:30,580 --> 01:05:34,050
creating this on platform object we need
to specify the generic argument so we

2780
01:05:34,050 --> 01:05:34,060
to specify the generic argument so we
 

2781
01:05:34,060 --> 01:05:36,870
to specify the generic argument so we
use another attribute here X type

2782
01:05:36,870 --> 01:05:36,880
use another attribute here X type
 

2783
01:05:36,880 --> 01:05:41,210
use another attribute here X type
arguments and we set this to thickness

2784
01:05:41,210 --> 01:05:41,220
arguments and we set this to thickness
 

2785
01:05:41,220 --> 01:05:43,920
arguments and we set this to thickness
again to emphasize because this is

2786
01:05:43,920 --> 01:05:43,930
again to emphasize because this is
 

2787
01:05:43,930 --> 01:05:45,060
again to emphasize because this is
prefixed with X

2788
01:05:45,060 --> 01:05:45,070
prefixed with X
 

2789
01:05:45,070 --> 01:05:47,490
prefixed with X
it belongs to Microsoft namespace and

2790
01:05:47,490 --> 01:05:47,500
it belongs to Microsoft namespace and
 

2791
01:05:47,500 --> 01:05:49,350
it belongs to Microsoft namespace and
it's part of the standards ammo that was

2792
01:05:49,350 --> 01:05:49,360
it's part of the standards ammo that was
 

2793
01:05:49,360 --> 01:05:53,310
it's part of the standards ammo that was
first introduced in year 2009 so this

2794
01:05:53,310 --> 01:05:53,320
first introduced in year 2009 so this
 

2795
01:05:53,320 --> 01:05:57,270
first introduced in year 2009 so this
line in zamel is exactly like this line

2796
01:05:57,270 --> 01:05:57,280
line in zamel is exactly like this line
 

2797
01:05:57,280 --> 01:05:59,910
line in zamel is exactly like this line
in c-sharp okay now we need to set

2798
01:05:59,910 --> 01:05:59,920
in c-sharp okay now we need to set
 

2799
01:05:59,920 --> 01:06:03,390
in c-sharp okay now we need to set
properties of our on platform object so

2800
01:06:03,390 --> 01:06:03,400
properties of our on platform object so
 

2801
01:06:03,400 --> 01:06:07,130
properties of our on platform object so
back in sam'l for iOS I'm going to use 0

2802
01:06:07,130 --> 01:06:07,140
back in sam'l for iOS I'm going to use 0
 

2803
01:06:07,140 --> 01:06:10,110
back in sam'l for iOS I'm going to use 0
2000 and to refresh your memory these

2804
01:06:10,110 --> 01:06:10,120
2000 and to refresh your memory these
 

2805
01:06:10,120 --> 01:06:12,870
2000 and to refresh your memory these
numbers represent left top right and

2806
01:06:12,870 --> 01:06:12,880
numbers represent left top right and
 

2807
01:06:12,880 --> 01:06:15,810
numbers represent left top right and
bottom in the last video I refer to

2808
01:06:15,810 --> 01:06:15,820
bottom in the last video I refer to
 

2809
01:06:15,820 --> 01:06:18,150
bottom in the last video I refer to
these numbers as pixels but the reality

2810
01:06:18,150 --> 01:06:18,160
these numbers as pixels but the reality
 

2811
01:06:18,160 --> 01:06:20,640
these numbers as pixels but the reality
is it's not a pixel for now for

2812
01:06:20,640 --> 01:06:20,650
is it's not a pixel for now for
 

2813
01:06:20,650 --> 01:06:24,150
is it's not a pixel for now for
simplicity imagine these are pixels so

2814
01:06:24,150 --> 01:06:24,160
simplicity imagine these are pixels so
 

2815
01:06:24,160 --> 01:06:26,010
simplicity imagine these are pixels so
now using this technique I can apply

2816
01:06:26,010 --> 01:06:26,020
now using this technique I can apply
 

2817
01:06:26,020 --> 01:06:28,760
now using this technique I can apply
various padding on different platforms I

2818
01:06:28,760 --> 01:06:28,770
various padding on different platforms I
 

2819
01:06:28,770 --> 01:06:31,320
various padding on different platforms I
can apply another padding for Android

2820
01:06:31,320 --> 01:06:31,330
can apply another padding for Android
 

2821
01:06:31,330 --> 01:06:35,670
can apply another padding for Android
and similarly for Windows if you ever

2822
01:06:35,670 --> 01:06:35,680
and similarly for Windows if you ever
 

2823
01:06:35,680 --> 01:06:39,370
and similarly for Windows if you ever
need to so to recap this video we

2824
01:06:39,370 --> 01:06:39,380
need to so to recap this video we
 

2825
01:06:39,380 --> 01:06:41,740
need to so to recap this video we
property element syntax when we are

2826
01:06:41,740 --> 01:06:41,750
property element syntax when we are
 

2827
01:06:41,750 --> 01:06:44,109
property element syntax when we are
dealing with complex objects that cannot

2828
01:06:44,109 --> 01:06:44,119
dealing with complex objects that cannot
 

2829
01:06:44,119 --> 01:06:49,850
dealing with complex objects that cannot
be represented using simple strings

2830
01:06:49,850 --> 01:06:49,860

 

2831
01:06:49,860 --> 01:06:50,870

all right in this video I'm going to

2832
01:06:50,870 --> 01:06:50,880
all right in this video I'm going to
 

2833
01:06:50,880 --> 01:06:53,480
all right in this video I'm going to
show you how to catch and prevent zamel

2834
01:06:53,480 --> 01:06:53,490
show you how to catch and prevent zamel
 

2835
01:06:53,490 --> 01:06:56,120
show you how to catch and prevent zamel
errors so as an example I'm going to

2836
01:06:56,120 --> 01:06:56,130
errors so as an example I'm going to
 

2837
01:06:56,130 --> 01:06:59,180
errors so as an example I'm going to
remove this s here now let's run this

2838
01:06:59,180 --> 01:06:59,190
remove this s here now let's run this
 

2839
01:06:59,190 --> 01:07:03,410
remove this s here now let's run this
application and see what happens

2840
01:07:03,410 --> 01:07:03,420

 

2841
01:07:03,420 --> 01:07:07,060

so the application launches

2842
01:07:07,060 --> 01:07:07,070
so the application launches
 

2843
01:07:07,070 --> 01:07:09,430
so the application launches
terminate immediately and currently I

2844
01:07:09,430 --> 01:07:09,440
terminate immediately and currently I
 

2845
01:07:09,440 --> 01:07:13,030
terminate immediately and currently I
have no idea what's going on here in

2846
01:07:13,030 --> 01:07:13,040
have no idea what's going on here in
 

2847
01:07:13,040 --> 01:07:15,190
have no idea what's going on here in
situations like this the first thing you

2848
01:07:15,190 --> 01:07:15,200
situations like this the first thing you
 

2849
01:07:15,200 --> 01:07:17,320
situations like this the first thing you
should look at is application output tab

2850
01:07:17,320 --> 01:07:17,330
should look at is application output tab
 

2851
01:07:17,330 --> 01:07:20,590
should look at is application output tab
in xamarin studio I believe in Visual

2852
01:07:20,590 --> 01:07:20,600
in xamarin studio I believe in Visual
 

2853
01:07:20,600 --> 01:07:24,370
in xamarin studio I believe in Visual
Studio this tab is called output now if

2854
01:07:24,370 --> 01:07:24,380
Studio this tab is called output now if
 

2855
01:07:24,380 --> 01:07:25,690
Studio this tab is called output now if
you look at this tab you see we have a

2856
01:07:25,690 --> 01:07:25,700
you look at this tab you see we have a
 

2857
01:07:25,700 --> 01:07:28,600
you look at this tab you see we have a
sam'l parse exception the exception says

2858
01:07:28,600 --> 01:07:28,610
sam'l parse exception the exception says
 

2859
01:07:28,610 --> 01:07:32,560
sam'l parse exception the exception says
type on platform not found so basically

2860
01:07:32,560 --> 01:07:32,570
type on platform not found so basically
 

2861
01:07:32,570 --> 01:07:34,270
type on platform not found so basically
what's happening here is we don't have

2862
01:07:34,270 --> 01:07:34,280
what's happening here is we don't have
 

2863
01:07:34,280 --> 01:07:37,530
what's happening here is we don't have
an on platform type that is not generic

2864
01:07:37,530 --> 01:07:37,540
an on platform type that is not generic
 

2865
01:07:37,540 --> 01:07:40,440
an on platform type that is not generic
so this is one way to find the exception

2866
01:07:40,440 --> 01:07:40,450
so this is one way to find the exception
 

2867
01:07:40,450 --> 01:07:43,120
so this is one way to find the exception
another way is to run the application in

2868
01:07:43,120 --> 01:07:43,130
another way is to run the application in
 

2869
01:07:43,130 --> 01:07:46,390
another way is to run the application in
debug mode in Visual Studio you press f5

2870
01:07:46,390 --> 01:07:46,400
debug mode in Visual Studio you press f5
 

2871
01:07:46,400 --> 01:07:49,210
debug mode in Visual Studio you press f5
instead of ctrl and f5 and xamarin

2872
01:07:49,210 --> 01:07:49,220
instead of ctrl and f5 and xamarin
 

2873
01:07:49,220 --> 01:07:49,600
instead of ctrl and f5 and xamarin
studio

2874
01:07:49,600 --> 01:07:49,610
studio
 

2875
01:07:49,610 --> 01:07:52,360
studio
you press command and enter instead of

2876
01:07:52,360 --> 01:07:52,370
you press command and enter instead of
 

2877
01:07:52,370 --> 01:07:55,750
you press command and enter instead of
command alt and enter another option is

2878
01:07:55,750 --> 01:07:55,760
command alt and enter another option is
 

2879
01:07:55,760 --> 01:07:58,350
command alt and enter another option is
to press this play icon on the toolbar

2880
01:07:58,350 --> 01:07:58,360
to press this play icon on the toolbar
 

2881
01:07:58,360 --> 01:08:02,740
to press this play icon on the toolbar
so let's run this okay we got the

2882
01:08:02,740 --> 01:08:02,750
so let's run this okay we got the
 

2883
01:08:02,750 --> 01:08:05,320
so let's run this okay we got the
exception so we got the zamel parse

2884
01:08:05,320 --> 01:08:05,330
exception so we got the zamel parse
 

2885
01:08:05,330 --> 01:08:07,480
exception so we got the zamel parse
exception and the exception message is

2886
01:08:07,480 --> 01:08:07,490
exception and the exception message is
 

2887
01:08:07,490 --> 01:08:11,650
exception and the exception message is
type on platform not found now the

2888
01:08:11,650 --> 01:08:11,660
type on platform not found now the
 

2889
01:08:11,660 --> 01:08:13,840
type on platform not found now the
problem we currently have is that we

2890
01:08:13,840 --> 01:08:13,850
problem we currently have is that we
 

2891
01:08:13,850 --> 01:08:15,970
problem we currently have is that we
will not know these exceptions until

2892
01:08:15,970 --> 01:08:15,980
will not know these exceptions until
 

2893
01:08:15,980 --> 01:08:18,820
will not know these exceptions until
runtime and as we're typing Zemo it's

2894
01:08:18,820 --> 01:08:18,830
runtime and as we're typing Zemo it's
 

2895
01:08:18,830 --> 01:08:20,380
runtime and as we're typing Zemo it's
quite possible that we may make a few

2896
01:08:20,380 --> 01:08:20,390
quite possible that we may make a few
 

2897
01:08:20,390 --> 01:08:22,630
quite possible that we may make a few
mistakes here and there so is there a

2898
01:08:22,630 --> 01:08:22,640
mistakes here and there so is there a
 

2899
01:08:22,640 --> 01:08:25,120
mistakes here and there so is there a
better way to catch these errors yes

2900
01:08:25,120 --> 01:08:25,130
better way to catch these errors yes
 

2901
01:08:25,130 --> 01:08:27,760
better way to catch these errors yes
there is we can include our sample files

2902
01:08:27,760 --> 01:08:27,770
there is we can include our sample files
 

2903
01:08:27,770 --> 01:08:30,640
there is we can include our sample files
as part of compilation so they will be

2904
01:08:30,640 --> 01:08:30,650
as part of compilation so they will be
 

2905
01:08:30,650 --> 01:08:32,710
as part of compilation so they will be
compiled into intermediate language or

2906
01:08:32,710 --> 01:08:32,720
compiled into intermediate language or
 

2907
01:08:32,720 --> 01:08:36,610
compiled into intermediate language or
il and this has a number of benefits the

2908
01:08:36,610 --> 01:08:36,620
il and this has a number of benefits the
 

2909
01:08:36,620 --> 01:08:38,590
il and this has a number of benefits the
first one is that we can catch errors at

2910
01:08:38,590 --> 01:08:38,600
first one is that we can catch errors at
 

2911
01:08:38,600 --> 01:08:41,559
first one is that we can catch errors at
compile time instead of runtime the

2912
01:08:41,559 --> 01:08:41,569
compile time instead of runtime the
 

2913
01:08:41,569 --> 01:08:43,539
compile time instead of runtime the
second benefit is that because sam'l

2914
01:08:43,539 --> 01:08:43,549
second benefit is that because sam'l
 

2915
01:08:43,549 --> 01:08:46,480
second benefit is that because sam'l
files are compiled into il the size of

2916
01:08:46,480 --> 01:08:46,490
files are compiled into il the size of
 

2917
01:08:46,490 --> 01:08:48,940
files are compiled into il the size of
final assembly will be reduced because

2918
01:08:48,940 --> 01:08:48,950
final assembly will be reduced because
 

2919
01:08:48,950 --> 01:08:51,190
final assembly will be reduced because
these ml files will not be embedded in

2920
01:08:51,190 --> 01:08:51,200
these ml files will not be embedded in
 

2921
01:08:51,200 --> 01:08:53,470
these ml files will not be embedded in
the final assembly and finally

2922
01:08:53,470 --> 01:08:53,480
the final assembly and finally
 

2923
01:08:53,480 --> 01:08:56,079
the final assembly and finally
compilation of zamel files but slightly

2924
01:08:56,079 --> 01:08:56,089
compilation of zamel files but slightly
 

2925
01:08:56,089 --> 01:08:58,870
compilation of zamel files but slightly
optimize the load and instantiation time

2926
01:08:58,870 --> 01:08:58,880
optimize the load and instantiation time
 

2927
01:08:58,880 --> 01:09:02,380
optimize the load and instantiation time
for sam'l elements now compilation is

2928
01:09:02,380 --> 01:09:02,390
for sam'l elements now compilation is
 

2929
01:09:02,390 --> 01:09:04,090
for sam'l elements now compilation is
disabled by default and we need to

2930
01:09:04,090 --> 01:09:04,100
disabled by default and we need to
 

2931
01:09:04,100 --> 01:09:07,420
disabled by default and we need to
enable it but that's pretty easy let's

2932
01:09:07,420 --> 01:09:07,430
enable it but that's pretty easy let's
 

2933
01:09:07,430 --> 01:09:12,190
enable it but that's pretty easy let's
go to the solution under properties you

2934
01:09:12,190 --> 01:09:12,200
go to the solution under properties you
 

2935
01:09:12,200 --> 01:09:16,120
go to the solution under properties you
find assembly info and here we have

2936
01:09:16,120 --> 01:09:16,130
find assembly info and here we have
 

2937
01:09:16,130 --> 01:09:18,220
find assembly info and here we have
attributes that apply to the assembly as

2938
01:09:18,220 --> 01:09:18,230
attributes that apply to the assembly as
 

2939
01:09:18,230 --> 01:09:20,349
attributes that apply to the assembly as
a whole like the title the version

2940
01:09:20,349 --> 01:09:20,359
a whole like the title the version
 

2941
01:09:20,359 --> 01:09:23,320
a whole like the title the version
copyright information and so on we can

2942
01:09:23,320 --> 01:09:23,330
copyright information and so on we can
 

2943
01:09:23,330 --> 01:09:26,490
copyright information and so on we can
include another attribute here brackets

2944
01:09:26,490 --> 01:09:26,500
include another attribute here brackets
 

2945
01:09:26,500 --> 01:09:30,160
include another attribute here brackets
assembly : and this prefix means this

2946
01:09:30,160 --> 01:09:30,170
assembly : and this prefix means this
 

2947
01:09:30,170 --> 01:09:32,079
assembly : and this prefix means this
attribute is applied to the whole

2948
01:09:32,079 --> 01:09:32,089
attribute is applied to the whole
 

2949
01:09:32,089 --> 01:09:37,539
attribute is applied to the whole
assembly zamel compilation now we get a

2950
01:09:37,539 --> 01:09:37,549
assembly zamel compilation now we get a
 

2951
01:09:37,549 --> 01:09:39,099
assembly zamel compilation now we get a
red underline here because we need to

2952
01:09:39,099 --> 01:09:39,109
red underline here because we need to
 

2953
01:09:39,109 --> 01:09:41,920
red underline here because we need to
resolve the namespace so on top of the

2954
01:09:41,920 --> 01:09:41,930
resolve the namespace so on top of the
 

2955
01:09:41,930 --> 01:09:50,230
resolve the namespace so on top of the
file using xamarin forms zamel now the

2956
01:09:50,230 --> 01:09:50,240
file using xamarin forms zamel now the
 

2957
01:09:50,240 --> 01:09:52,270
file using xamarin forms zamel now the
parameter to this attribute is an

2958
01:09:52,270 --> 01:09:52,280
parameter to this attribute is an
 

2959
01:09:52,280 --> 01:09:54,490
parameter to this attribute is an
enumeration called zamel compilation

2960
01:09:54,490 --> 01:09:54,500
enumeration called zamel compilation
 

2961
01:09:54,500 --> 01:10:00,820
enumeration called zamel compilation
options the default value is scheme so I

2962
01:10:00,820 --> 01:10:00,830
options the default value is scheme so I
 

2963
01:10:00,830 --> 01:10:03,400
options the default value is scheme so I
want to set this to compile and that's

2964
01:10:03,400 --> 01:10:03,410
want to set this to compile and that's
 

2965
01:10:03,410 --> 01:10:05,800
want to set this to compile and that's
all we have to do now if I build the

2966
01:10:05,800 --> 01:10:05,810
all we have to do now if I build the
 

2967
01:10:05,810 --> 01:10:09,840
all we have to do now if I build the
application again look we got an error

2968
01:10:09,840 --> 01:10:09,850
application again look we got an error
 

2969
01:10:09,850 --> 01:10:14,050
application again look we got an error
and here's the exact same error we got

2970
01:10:14,050 --> 01:10:14,060
and here's the exact same error we got
 

2971
01:10:14,060 --> 01:10:16,150
and here's the exact same error we got
at runtime but now we're catching it at

2972
01:10:16,150 --> 01:10:16,160
at runtime but now we're catching it at
 

2973
01:10:16,160 --> 01:10:18,700
at runtime but now we're catching it at
compile time so this is a pretty good

2974
01:10:18,700 --> 01:10:18,710
compile time so this is a pretty good
 

2975
01:10:18,710 --> 01:10:20,290
compile time so this is a pretty good
attribute to always include in your

2976
01:10:20,290 --> 01:10:20,300
attribute to always include in your
 

2977
01:10:20,300 --> 01:10:22,690
attribute to always include in your
assemblies but just in case you need to

2978
01:10:22,690 --> 01:10:22,700
assemblies but just in case you need to
 

2979
01:10:22,700 --> 01:10:25,090
assemblies but just in case you need to
disable it on a particular sam'l file

2980
01:10:25,090 --> 01:10:25,100
disable it on a particular sam'l file
 

2981
01:10:25,100 --> 01:10:27,610
disable it on a particular sam'l file
you can simply go to the code-behind for

2982
01:10:27,610 --> 01:10:27,620
you can simply go to the code-behind for
 

2983
01:10:27,620 --> 01:10:30,340
you can simply go to the code-behind for
that sam'l file for example let's say we

2984
01:10:30,340 --> 01:10:30,350
that sam'l file for example let's say we
 

2985
01:10:30,350 --> 01:10:34,000
that sam'l file for example let's say we
want to disable this on greet page so we

2986
01:10:34,000 --> 01:10:34,010
want to disable this on greet page so we
 

2987
01:10:34,010 --> 01:10:35,730
want to disable this on greet page so we
go to the code-behind

2988
01:10:35,730 --> 01:10:35,740
go to the code-behind
 

2989
01:10:35,740 --> 01:10:39,030
go to the code-behind
import the name space using xamarin

2990
01:10:39,030 --> 01:10:39,040
import the name space using xamarin
 

2991
01:10:39,040 --> 01:10:43,540
import the name space using xamarin
forms sam'l and then apply the attribute

2992
01:10:43,540 --> 01:10:43,550
forms sam'l and then apply the attribute
 

2993
01:10:43,550 --> 01:10:46,890
forms sam'l and then apply the attribute
to the class sam'l compilation

2994
01:10:46,890 --> 01:10:46,900
to the class sam'l compilation
 

2995
01:10:46,900 --> 01:10:51,160
to the class sam'l compilation
compilation options skip all right we're

2996
01:10:51,160 --> 01:10:51,170
compilation options skip all right we're
 

2997
01:10:51,170 --> 01:10:53,650
compilation options skip all right we're
done with the basics of sam'l now it's

2998
01:10:53,650 --> 01:10:53,660
done with the basics of sam'l now it's
 

2999
01:10:53,660 --> 01:10:55,690
done with the basics of sam'l now it's
your turn so in the next lecture I'm

3000
01:10:55,690 --> 01:10:55,700
your turn so in the next lecture I'm
 

3001
01:10:55,700 --> 01:11:00,940
your turn so in the next lecture I'm
going to give you some exercises all

3002
01:11:00,940 --> 01:11:00,950
going to give you some exercises all
 

3003
01:11:00,950 --> 01:11:04,270
going to give you some exercises all
right now it's your turn I want you to

3004
01:11:04,270 --> 01:11:04,280
right now it's your turn I want you to
 

3005
01:11:04,280 --> 01:11:05,380
right now it's your turn I want you to
use what you have learned in this

3006
01:11:05,380 --> 01:11:05,390
use what you have learned in this
 

3007
01:11:05,390 --> 01:11:07,360
use what you have learned in this
section and build a simple application

3008
01:11:07,360 --> 01:11:07,370
section and build a simple application
 

3009
01:11:07,370 --> 01:11:10,440
section and build a simple application
like this so this is a cool application

3010
01:11:10,440 --> 01:11:10,450
like this so this is a cool application
 

3011
01:11:10,450 --> 01:11:13,000
like this so this is a cool application
we've got this bun on the top to

3012
01:11:13,000 --> 01:11:13,010
we've got this bun on the top to
 

3013
01:11:13,010 --> 01:11:15,279
we've got this bun on the top to
navigate through different quotes

3014
01:11:15,279 --> 01:11:15,289
navigate through different quotes
 

3015
01:11:15,289 --> 01:11:19,959
navigate through different quotes
and these are decodes by Einstein now

3016
01:11:19,959 --> 01:11:19,969
and these are decodes by Einstein now
 

3017
01:11:19,969 --> 01:11:21,549
and these are decodes by Einstein now
when building this application you don't

3018
01:11:21,549 --> 01:11:21,559
when building this application you don't
 

3019
01:11:21,559 --> 01:11:22,990
when building this application you don't
necessarily have to use the code I've

3020
01:11:22,990 --> 01:11:23,000
necessarily have to use the code I've
 

3021
01:11:23,000 --> 01:11:25,180
necessarily have to use the code I've
used here you can use simple string

3022
01:11:25,180 --> 01:11:25,190
used here you can use simple string
 

3023
01:11:25,190 --> 01:11:29,290
used here you can use simple string
values like quote 100 200 3 the point

3024
01:11:29,290 --> 01:11:29,300
values like quote 100 200 3 the point
 

3025
01:11:29,300 --> 01:11:31,689
values like quote 100 200 3 the point
here is that you have limited number of

3026
01:11:31,689 --> 01:11:31,699
here is that you have limited number of
 

3027
01:11:31,699 --> 01:11:34,330
here is that you have limited number of
cores in your application and as you

3028
01:11:34,330 --> 01:11:34,340
cores in your application and as you
 

3029
01:11:34,340 --> 01:11:36,759
cores in your application and as you
click Next when you get to the end of

3030
01:11:36,759 --> 01:11:36,769
click Next when you get to the end of
 

3031
01:11:36,769 --> 01:11:40,000
click Next when you get to the end of
the list and you start over we also have

3032
01:11:40,000 --> 01:11:40,010
the list and you start over we also have
 

3033
01:11:40,010 --> 01:11:42,310
the list and you start over we also have
this slider for changing the size of the

3034
01:11:42,310 --> 01:11:42,320
this slider for changing the size of the
 

3035
01:11:42,320 --> 01:11:50,080
this slider for changing the size of the
text so before you get started look at

3036
01:11:50,080 --> 01:11:50,090
text so before you get started look at
 

3037
01:11:50,090 --> 01:11:52,000
text so before you get started look at
the PDF I'm attached to this lecture all

3038
01:11:52,000 --> 01:11:52,010
the PDF I'm attached to this lecture all
 

3039
01:11:52,010 --> 01:11:54,220
the PDF I'm attached to this lecture all
the best and I'll see you in the next

3040
01:11:54,220 --> 01:11:54,230
the best and I'll see you in the next
 

3041
01:11:54,230 --> 01:11:56,050
the best and I'll see you in the next
section

3042
01:11:56,050 --> 01:11:56,060
section
 

3043
01:11:56,060 --> 01:11:58,830
section
[Music]

3044
01:11:58,830 --> 01:11:58,840
[Music]
 

3045
01:11:58,840 --> 01:12:00,879
[Music]
ok you seem to be very enthusiastic

3046
01:12:00,879 --> 01:12:00,889
ok you seem to be very enthusiastic
 

3047
01:12:00,889 --> 01:12:03,939
ok you seem to be very enthusiastic
about learning zaman forms so once again

3048
01:12:03,939 --> 01:12:03,949
about learning zaman forms so once again
 

3049
01:12:03,949 --> 01:12:06,129
about learning zaman forms so once again
if you're interested to take my seven

3050
01:12:06,129 --> 01:12:06,139
if you're interested to take my seven
 

3051
01:12:06,139 --> 01:12:07,899
if you're interested to take my seven
and a half hour course with a discount

3052
01:12:07,899 --> 01:12:07,909
and a half hour course with a discount
 

3053
01:12:07,909 --> 01:12:09,700
and a half hour course with a discount
click the link in the video description

3054
01:12:09,700 --> 01:12:09,710
click the link in the video description
 

3055
01:12:09,710 --> 01:12:11,730
click the link in the video description
I hope to see you in the course

3056
01:12:11,730 --> 01:12:11,740
I hope to see you in the course
 

3057
01:12:11,740 --> 01:12:18,790
I hope to see you in the course
[Music]

