SlideShare a Scribd company logo
1 of 46
Building Your First Store App using XAML
Tamir Dresher
Senior Software Architect
January 27, 2014
About Me
@tamir_dresher
tamirdr@codevalue.net
http://www.TamirDresher.com.
•
•
•
•
•

Software architect, consultant and instructor
Software Engineering Lecturer @ Ruppin Academic Center
Technology addict
10 years of experience
.NET and Native Windows Programming
Agenda
• Windows 8.1 platform (briefly)
• Basic XAML
• Your First Store App
Agenda
• Windows 8.1 platform (briefly)
• Basic XAML
• Your First Store App
Windows 8 Platform

Core

System Services

Model
Controller

View

Modern UI Apps
XAML
C
C++

Desktop Apps

HTML / CSS
C#
VB

JavaScript
(Chakra)

HTML

C
C++

C#
VB

Internet
Explorer

Win32

.NET
/ SL

JavaScript

WinRT APIs
Communication
& Data

Graphics &
Media
Application Model

Devices &
Printing

Windows Core OS Services
Windows Store app life cycle
Process status
App gets 5s to handle
suspend

App is not notified
before termination

suspend
Start app

resume

Low resources

App
terminated

Apps are notified
when they have been
resumed

Splash
screen

Code Execution

App not running

Logic state of the app
http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx
App Manifest (.appxmanifest)
• It declares explicitly endpoints for integration of the
app
• File (music/images/videos/documents…)
• Device (webcam, microphone, location, …)
• Network and identity (internet, private
network, credentials)
• File associations
• App contracts (search, share, etc.)
Agenda
• Windows 8/8.1 platform (briefly)
• Basic XAML
• Your First Store App
What is XAML?
• Extensible Application Markup Language
• Technology developed by Microsoft
• Markup language for definition of UI, it maps directly CLR
object instances into markup

• Used by Silverlight, WPF... and now for Win 8 apps, too
• Easy to use for who knows HTML or XML technologies
Basic XAML Syntax (1)
• Elements
<StackPanel>
<Button>Click me!</Button>
</StackPanel>

• Attributes
<Button Background="Blue" Content="This is a button"/>
Basic XAML Syntax (2)
• Property Element Syntax
<Button>
<Button.Background>
<SolidColorBrush Color="Blue"/>
</Button.Background>
<Button.Foreground>
<SolidColorBrush Color="Red"/>
</Button.Foreground>
<Button.Content>
This is a button
</Button.Content>
</Button>
Basic XAML Syntax - Events
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ExampleNamespace.ExamplePage">
<Button Click="Button_Click">Click Me!</Button>

</Page>
Basic XAML Syntax – Markup Extensions
<Page.Resources>
<SolidColorBrush x:Key="MyBrush" Color="Gold"/>
<Style TargetType="Border" x:Key="PageBackground">
<Setter Property="Background" Value="Blue"/>
</Style>
...
</Page.Resources>
<StackPanel>
<Border Style="{StaticResource PageBackground}">
...
</Border>
</StackPanel>
Agenda
• Windows 8/8.1 platform (briefly)
• Basic XAML
• Your First Store App
Step 1: Creating the project & understand solution’s layout
Tip: Replace always Blank Page with Basic Page.
Basic Page adds some basic layouts and useful helpers
Step 1: Creating the project & understand solution’s layout
Identifies that app is targeted for
Windows 8.1
Step 1: Creating the project & understand solution’s layout
References WinRT
Step 1: Creating the project & understand solution’s layout
Folder for assets of the app
Step 1: Creating the project & understand solution’s layout
Typically created by a
wizard, common classes to be
shared across the project
Step 1: Creating the project & understand solution’s layout
Starting point of the application. It
can be changed into
Package.appxmanifest
Step 1: Creating the project & understand solution’s layout
Main Page of the project. I advice
to replace it always with a Basic
Page, instead of using a Blank
Page.
Step 1: Creating the project & understand solution’s layout
Appxmainfest.
Configure the
permissions, Capabilities and other
about the App
Step 1: Creating the project & understand solution’s layout
Certificate for development & test
The Main View

24
The Main View

(0,0)

25

(0,1)

(1,0)

(1,1)
The Main View

(0,0)

(1,0)

26

(0,1)

(1,1)

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!--Your Elements Goes Here
<!--Grid.Row="<RowNumber>"
<!--Grid.Column="<ColumnNumber>"
<!--Grid.RowSpan="<RowsAmount>"
<!--Grid.ColumnSpan="<ColumnAmount>"
<!--Declares The Element Position
</Grid>

-->
-->
-->
-->
-->
-->
Demo
Creating The View
The MVVM Pattern
Methods,
Properties

Commands,
Properties

View

ViewModel
Events

Model
Model
Model

Events

• Model – View – ViewModel
• Separation of concerns
• Natural pattern for XAML based applications
– Data binding is key

• Enables developer-designer workflow
• Increases application testability and readability
ToDoItem
DataBinding
• the mechanism for establishing a connection between the UI
element and a Data source
• DataContext – Contains the default data source object

<Element Property=“{Binding Path=PropName}“/>
DataBinding
• <GridView ItemsSource=“{Binding Items}” />
MainPage
GridView

MainPageViewModel
ToDoItems
DataBinding
• <GridView ItemsSource=“{Binding Items}” />
MainPage

MainPageViewModel

GridView
TODO
View

TODO
View

Items
TODO1

TODO2
Demo
Creating the Binding
DataTemplate
• Configure the visual appearance of a data item
• Set the ItemTemplate For ItemsControls like:
ListBox, ComboBox, ListView, GridView etc.
• Default template (in case you don’t override) is just a TextBlock
• For complex objects – ToString() will be called
DataTemplate
<GridView ItemsSource="{Binding Items}">
<GridView.ItemTemplate>
<DataTemplate>
<!--Your Elements Goes Here-->
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
Demo
Creating the DataTemplate
ICommand
• Enables binding to an operation
interface ICommand
bool CanExecute(object parameter
void Execute(object parameter ;
event EventHandler CanExecuteChanged;
}

• RelayCommad – implements ICommand and gives a generic
way to create command using delegates
Demo
Adding a New Item
Search
• Search Charm
Search – Add Capability
Search – Set the Logic
1) Get the search pane and attach to it
var searchPane = SearchPane.GetForCurrentView();
searchPane.SuggestionsRequested += OnSearchPaneSuggestionsRequested;
Search – Set the Logic
2) Implement the search logic
void OnSearchPaneSuggestionsRequested(SearchPane sender,
SearchPaneSuggestionsRequestedEventArgs e)
{
var request = e.Request;
...
// Your Search Logic
...
A
// Add suggestion to Search Pane – SearchPane can show up to 25 result
request.SearchSuggestionCollection.AppendQuerySuggestion(<Result String>);
}
Search – Handle the selected value
• in your App class override the method:
void OnSearchActivated(SearchActivatedEventArgs args

• args.QueryText contains the string that was
entered/selected in the SearchPane
Demo
Integrating Search
What have we seen
•
•
•
•
•

Developing Windows 8/8.1 App is Fun
Basic XAML
Basic Binding
Creating View and ViewModel
Adding Search Capability
Presenter contact details
c: +972-52-4772946
t: @tamir_dresher
e: tamirdr@codevalue.net
b: TamirDresher.com
w: www.codevalue.net

More Related Content

What's hot

Content by query web part
Content by query web partContent by query web part
Content by query web part
IslamKhattab
 
SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014
Mark Rackley
 
Spca2014 js link and display templates hatch
Spca2014 js link and display templates hatchSpca2014 js link and display templates hatch
Spca2014 js link and display templates hatch
NCCOMMS
 

What's hot (20)

SPSNH 2014 - The SharePoint & jQueryGuide
SPSNH 2014 - The SharePoint & jQueryGuideSPSNH 2014 - The SharePoint & jQueryGuide
SPSNH 2014 - The SharePoint & jQueryGuide
 
SEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointSEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePoint
 
SPTechCon Boston 2015 - Utilizing jQuery in SharePoint
SPTechCon Boston 2015 - Utilizing jQuery in SharePointSPTechCon Boston 2015 - Utilizing jQuery in SharePoint
SPTechCon Boston 2015 - Utilizing jQuery in SharePoint
 
SPTechCon 2014 How to develop and debug client side code in SharePoint
SPTechCon 2014 How to develop and debug client side code in SharePointSPTechCon 2014 How to develop and debug client side code in SharePoint
SPTechCon 2014 How to develop and debug client side code in SharePoint
 
SEF2013 - Create a Business Solution, Step by Step, with No Managed Code
SEF2013 - Create a Business Solution, Step by Step, with No Managed CodeSEF2013 - Create a Business Solution, Step by Step, with No Managed Code
SEF2013 - Create a Business Solution, Step by Step, with No Managed Code
 
Content by query web part
Content by query web partContent by query web part
Content by query web part
 
Introduction to StratusForms #SayNoToInfoPath
Introduction to StratusForms #SayNoToInfoPathIntroduction to StratusForms #SayNoToInfoPath
Introduction to StratusForms #SayNoToInfoPath
 
SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014SharePoint & jQuery Guide - SPSNashville 2014
SharePoint & jQuery Guide - SPSNashville 2014
 
The SharePoint & jQuery Guide - Updated 1/14/14
The SharePoint & jQuery Guide - Updated 1/14/14The SharePoint & jQuery Guide - Updated 1/14/14
The SharePoint & jQuery Guide - Updated 1/14/14
 
TulsaTechFest - Maximize SharePoint UX with free jQuery libraries
TulsaTechFest - Maximize SharePoint UX with free jQuery librariesTulsaTechFest - Maximize SharePoint UX with free jQuery libraries
TulsaTechFest - Maximize SharePoint UX with free jQuery libraries
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
Reaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and PolymerReaching for the Future with Web Components and Polymer
Reaching for the Future with Web Components and Polymer
 
Introduction to using jQuery with SharePoint
Introduction to using jQuery with SharePointIntroduction to using jQuery with SharePoint
Introduction to using jQuery with SharePoint
 
SPCA2013 - SharePoint Nightmares - Coding Patterns and Practices
SPCA2013 - SharePoint Nightmares - Coding Patterns and PracticesSPCA2013 - SharePoint Nightmares - Coding Patterns and Practices
SPCA2013 - SharePoint Nightmares - Coding Patterns and Practices
 
Spca2014 js link and display templates hatch
Spca2014 js link and display templates hatchSpca2014 js link and display templates hatch
Spca2014 js link and display templates hatch
 
A Power User's Intro to jQuery Awesomeness in SharePoint
A Power User's Intro to jQuery Awesomeness in SharePointA Power User's Intro to jQuery Awesomeness in SharePoint
A Power User's Intro to jQuery Awesomeness in SharePoint
 
Using jQuery to Maximize Form Usability
Using jQuery to Maximize Form UsabilityUsing jQuery to Maximize Form Usability
Using jQuery to Maximize Form Usability
 
SPTechCon Boston 2015 - Overcoming SharePoint Limitations
SPTechCon Boston 2015 - Overcoming SharePoint LimitationsSPTechCon Boston 2015 - Overcoming SharePoint Limitations
SPTechCon Boston 2015 - Overcoming SharePoint Limitations
 
Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigms
 

Similar to Building Your First Store App with XAML and C#

Build a game with javascript (april 2017)
Build a game with javascript (april 2017)Build a game with javascript (april 2017)
Build a game with javascript (april 2017)
Thinkful
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
Mark Rackley
 
Web matrix part 2
Web matrix part 2Web matrix part 2
Web matrix part 2
yuvaraj72
 

Similar to Building Your First Store App with XAML and C# (20)

Creating Great Applications in SharePoint 2010 with Silverlight 4
Creating Great Applications in SharePoint 2010 with Silverlight 4Creating Great Applications in SharePoint 2010 with Silverlight 4
Creating Great Applications in SharePoint 2010 with Silverlight 4
 
Browser Developer Tools for APEX Developers
Browser Developer Tools for APEX DevelopersBrowser Developer Tools for APEX Developers
Browser Developer Tools for APEX Developers
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
 
Lec005 android start_program
Lec005 android start_programLec005 android start_program
Lec005 android start_program
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
 
Easy javascript
Easy javascriptEasy javascript
Easy javascript
 
MongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch TutorialMongoDB.local Atlanta: MongoDB Stitch Tutorial
MongoDB.local Atlanta: MongoDB Stitch Tutorial
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide
 
Html 5 - What's new?
Html 5 - What's new?Html 5 - What's new?
Html 5 - What's new?
 
Build a game with javascript (april 2017)
Build a game with javascript (april 2017)Build a game with javascript (april 2017)
Build a game with javascript (april 2017)
 
Android application development for TresmaxAsia
Android application development for TresmaxAsiaAndroid application development for TresmaxAsia
Android application development for TresmaxAsia
 
JavaScripts & jQuery
JavaScripts & jQueryJavaScripts & jQuery
JavaScripts & jQuery
 
ASP.NET - Ivan Marković
ASP.NET - Ivan MarkovićASP.NET - Ivan Marković
ASP.NET - Ivan Marković
 
SharePoint Framework, React, and Office UI sps Silicon Valley
SharePoint Framework, React, and Office UI sps Silicon ValleySharePoint Framework, React, and Office UI sps Silicon Valley
SharePoint Framework, React, and Office UI sps Silicon Valley
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
Microsoft Entity Framework
Microsoft Entity FrameworkMicrosoft Entity Framework
Microsoft Entity Framework
 
Metaworks4 intro
Metaworks4 introMetaworks4 intro
Metaworks4 intro
 
Web matrix part 2
Web matrix part 2Web matrix part 2
Web matrix part 2
 

More from Tamir Dresher

More from Tamir Dresher (20)

NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdfNET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
NET Aspire - NET Conf IL 2024 - Tamir Dresher.pdf
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
 
Tamir Dresher - What’s new in ASP.NET Core 6
Tamir Dresher - What’s new in ASP.NET Core 6Tamir Dresher - What’s new in ASP.NET Core 6
Tamir Dresher - What’s new in ASP.NET Core 6
 
Tamir Dresher - Async Streams in C#
Tamir Dresher - Async Streams in C#Tamir Dresher - Async Streams in C#
Tamir Dresher - Async Streams in C#
 
Anatomy of a data driven architecture - Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher   Anatomy of a data driven architecture - Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher
 
Tamir Dresher Clarizen adventures with the wild GC during the holiday season
Tamir Dresher   Clarizen adventures with the wild GC during the holiday seasonTamir Dresher   Clarizen adventures with the wild GC during the holiday season
Tamir Dresher Clarizen adventures with the wild GC during the holiday season
 
Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
 
From zero to hero with the actor model - Tamir Dresher - Odessa 2019
From zero to hero with the actor model  - Tamir Dresher - Odessa 2019From zero to hero with the actor model  - Tamir Dresher - Odessa 2019
From zero to hero with the actor model - Tamir Dresher - Odessa 2019
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
 
.Net december 2017 updates - Tamir Dresher
.Net december 2017 updates - Tamir Dresher.Net december 2017 updates - Tamir Dresher
.Net december 2017 updates - Tamir Dresher
 
Testing time and concurrency Rx
Testing time and concurrency RxTesting time and concurrency Rx
Testing time and concurrency Rx
 
Building responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresherBuilding responsive application with Rx - confoo - tamir dresher
Building responsive application with Rx - confoo - tamir dresher
 
.NET Debugging tricks you wish you knew tamir dresher
.NET Debugging tricks you wish you knew   tamir dresher.NET Debugging tricks you wish you knew   tamir dresher
.NET Debugging tricks you wish you knew tamir dresher
 
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir DresherFrom Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
From Zero to the Actor Model (With Akka.Net) - CodeMash2017 - Tamir Dresher
 
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx  - CodeMash2017 - Tamir DresherBuilding responsive applications with Rx  - CodeMash2017 - Tamir Dresher
Building responsive applications with Rx - CodeMash2017 - Tamir Dresher
 
Debugging tricks you wish you knew - Tamir Dresher
Debugging tricks you wish you knew  - Tamir DresherDebugging tricks you wish you knew  - Tamir Dresher
Debugging tricks you wish you knew - Tamir Dresher
 
Rx 101 - Tamir Dresher - Copenhagen .NET User Group
Rx 101  - Tamir Dresher - Copenhagen .NET User GroupRx 101  - Tamir Dresher - Copenhagen .NET User Group
Rx 101 - Tamir Dresher - Copenhagen .NET User Group
 
Cloud patterns - NDC Oslo 2016 - Tamir Dresher
Cloud patterns - NDC Oslo 2016 - Tamir DresherCloud patterns - NDC Oslo 2016 - Tamir Dresher
Cloud patterns - NDC Oslo 2016 - Tamir Dresher
 
Reactiveness All The Way - SW Architecture 2015 Conference
Reactiveness All The Way - SW Architecture 2015 ConferenceReactiveness All The Way - SW Architecture 2015 Conference
Reactiveness All The Way - SW Architecture 2015 Conference
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Building Your First Store App with XAML and C#

  • 1. Building Your First Store App using XAML Tamir Dresher Senior Software Architect January 27, 2014
  • 2. About Me @tamir_dresher tamirdr@codevalue.net http://www.TamirDresher.com. • • • • • Software architect, consultant and instructor Software Engineering Lecturer @ Ruppin Academic Center Technology addict 10 years of experience .NET and Native Windows Programming
  • 3. Agenda • Windows 8.1 platform (briefly) • Basic XAML • Your First Store App
  • 4. Agenda • Windows 8.1 platform (briefly) • Basic XAML • Your First Store App
  • 5. Windows 8 Platform Core System Services Model Controller View Modern UI Apps XAML C C++ Desktop Apps HTML / CSS C# VB JavaScript (Chakra) HTML C C++ C# VB Internet Explorer Win32 .NET / SL JavaScript WinRT APIs Communication & Data Graphics & Media Application Model Devices & Printing Windows Core OS Services
  • 6. Windows Store app life cycle Process status App gets 5s to handle suspend App is not notified before termination suspend Start app resume Low resources App terminated Apps are notified when they have been resumed Splash screen Code Execution App not running Logic state of the app http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx
  • 7. App Manifest (.appxmanifest) • It declares explicitly endpoints for integration of the app • File (music/images/videos/documents…) • Device (webcam, microphone, location, …) • Network and identity (internet, private network, credentials) • File associations • App contracts (search, share, etc.)
  • 8. Agenda • Windows 8/8.1 platform (briefly) • Basic XAML • Your First Store App
  • 9. What is XAML? • Extensible Application Markup Language • Technology developed by Microsoft • Markup language for definition of UI, it maps directly CLR object instances into markup • Used by Silverlight, WPF... and now for Win 8 apps, too • Easy to use for who knows HTML or XML technologies
  • 10. Basic XAML Syntax (1) • Elements <StackPanel> <Button>Click me!</Button> </StackPanel> • Attributes <Button Background="Blue" Content="This is a button"/>
  • 11. Basic XAML Syntax (2) • Property Element Syntax <Button> <Button.Background> <SolidColorBrush Color="Blue"/> </Button.Background> <Button.Foreground> <SolidColorBrush Color="Red"/> </Button.Foreground> <Button.Content> This is a button </Button.Content> </Button>
  • 12. Basic XAML Syntax - Events <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExampleNamespace.ExamplePage"> <Button Click="Button_Click">Click Me!</Button> </Page>
  • 13. Basic XAML Syntax – Markup Extensions <Page.Resources> <SolidColorBrush x:Key="MyBrush" Color="Gold"/> <Style TargetType="Border" x:Key="PageBackground"> <Setter Property="Background" Value="Blue"/> </Style> ... </Page.Resources> <StackPanel> <Border Style="{StaticResource PageBackground}"> ... </Border> </StackPanel>
  • 14. Agenda • Windows 8/8.1 platform (briefly) • Basic XAML • Your First Store App
  • 15. Step 1: Creating the project & understand solution’s layout Tip: Replace always Blank Page with Basic Page. Basic Page adds some basic layouts and useful helpers
  • 16. Step 1: Creating the project & understand solution’s layout Identifies that app is targeted for Windows 8.1
  • 17. Step 1: Creating the project & understand solution’s layout References WinRT
  • 18. Step 1: Creating the project & understand solution’s layout Folder for assets of the app
  • 19. Step 1: Creating the project & understand solution’s layout Typically created by a wizard, common classes to be shared across the project
  • 20. Step 1: Creating the project & understand solution’s layout Starting point of the application. It can be changed into Package.appxmanifest
  • 21. Step 1: Creating the project & understand solution’s layout Main Page of the project. I advice to replace it always with a Basic Page, instead of using a Blank Page.
  • 22. Step 1: Creating the project & understand solution’s layout Appxmainfest. Configure the permissions, Capabilities and other about the App
  • 23. Step 1: Creating the project & understand solution’s layout Certificate for development & test
  • 26. The Main View (0,0) (1,0) 26 (0,1) (1,1) <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <!--Your Elements Goes Here <!--Grid.Row="<RowNumber>" <!--Grid.Column="<ColumnNumber>" <!--Grid.RowSpan="<RowsAmount>" <!--Grid.ColumnSpan="<ColumnAmount>" <!--Declares The Element Position </Grid> --> --> --> --> --> -->
  • 28. The MVVM Pattern Methods, Properties Commands, Properties View ViewModel Events Model Model Model Events • Model – View – ViewModel • Separation of concerns • Natural pattern for XAML based applications – Data binding is key • Enables developer-designer workflow • Increases application testability and readability
  • 30. DataBinding • the mechanism for establishing a connection between the UI element and a Data source • DataContext – Contains the default data source object <Element Property=“{Binding Path=PropName}“/>
  • 31. DataBinding • <GridView ItemsSource=“{Binding Items}” /> MainPage GridView MainPageViewModel ToDoItems
  • 32. DataBinding • <GridView ItemsSource=“{Binding Items}” /> MainPage MainPageViewModel GridView TODO View TODO View Items TODO1 TODO2
  • 34. DataTemplate • Configure the visual appearance of a data item • Set the ItemTemplate For ItemsControls like: ListBox, ComboBox, ListView, GridView etc. • Default template (in case you don’t override) is just a TextBlock • For complex objects – ToString() will be called
  • 35. DataTemplate <GridView ItemsSource="{Binding Items}"> <GridView.ItemTemplate> <DataTemplate> <!--Your Elements Goes Here--> </DataTemplate> </GridView.ItemTemplate> </GridView>
  • 37. ICommand • Enables binding to an operation interface ICommand bool CanExecute(object parameter void Execute(object parameter ; event EventHandler CanExecuteChanged; } • RelayCommad – implements ICommand and gives a generic way to create command using delegates
  • 40. Search – Add Capability
  • 41. Search – Set the Logic 1) Get the search pane and attach to it var searchPane = SearchPane.GetForCurrentView(); searchPane.SuggestionsRequested += OnSearchPaneSuggestionsRequested;
  • 42. Search – Set the Logic 2) Implement the search logic void OnSearchPaneSuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs e) { var request = e.Request; ... // Your Search Logic ... A // Add suggestion to Search Pane – SearchPane can show up to 25 result request.SearchSuggestionCollection.AppendQuerySuggestion(<Result String>); }
  • 43. Search – Handle the selected value • in your App class override the method: void OnSearchActivated(SearchActivatedEventArgs args • args.QueryText contains the string that was entered/selected in the SearchPane
  • 45. What have we seen • • • • • Developing Windows 8/8.1 App is Fun Basic XAML Basic Binding Creating View and ViewModel Adding Search Capability
  • 46. Presenter contact details c: +972-52-4772946 t: @tamir_dresher e: tamirdr@codevalue.net b: TamirDresher.com w: www.codevalue.net