<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Zeeshan Amjad&#039;s WinRT, and WPF Blog</title>
	<atom:link href="http://zamjad.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://zamjad.wordpress.com</link>
	<description>My WinRT, and WPF programming experiments</description>
	<lastBuildDate>Thu, 16 May 2013 13:51:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='zamjad.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Zeeshan Amjad&#039;s WinRT, and WPF Blog</title>
		<link>http://zamjad.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://zamjad.wordpress.com/osd.xml" title="Zeeshan Amjad&#039;s WinRT, and WPF Blog" />
	<atom:link rel='hub' href='http://zamjad.wordpress.com/?pushpress=hub'/>
		<item>
		<title>ListBox in ComboBox</title>
		<link>http://zamjad.wordpress.com/2013/05/15/listbox-in-combobox/</link>
		<comments>http://zamjad.wordpress.com/2013/05/15/listbox-in-combobox/#comments</comments>
		<pubDate>Thu, 16 May 2013 02:14:49 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[WPF]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[Binding]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Controls]]></category>
		<category><![CDATA[ListBox]]></category>
		<category><![CDATA[ComboBox]]></category>
		<category><![CDATA[DataTemplate]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[Data Binding]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[ItemContainerStyle]]></category>
		<category><![CDATA[SelectedItem]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1981</guid>
		<description><![CDATA[I came across a request to insert listbox inside the combobox. This particular task is quite simple and we already saw an example reverse of it here where we display combobox inside the listbox. The basic idea is same that is created an ObservableCollection of ObservableCollection and then set the ItemsSource property accordingly. The second [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1981&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I came across a request to insert listbox inside the combobox. This particular task is quite simple and we already saw an example reverse of it <a href="http://zamjad.wordpress.com/2011/01/09/combo-box-inside-list-box/">here</a> where we display combobox inside the listbox. The basic idea is same that is created an ObservableCollection of ObservableCollection and then set the ItemsSource property accordingly. </p>
<p>The second part of the question is little tricky. The second part of the question is to display the selected item of inner listbox in the combobox. We already solved similar problem where we have different presentation in combo box and selected item by using ItemContinerStyle property <a href="http://zamjad.wordpress.com/2012/08/15/multi-columns-combo-box/">here</a>. In that example we display multiple column in combo box but display only one data when we select the data. Now we are going to use the same technique here. </p>
<p>But here the problem is how can we get the selected item of listbox so we can display it in combo box. </p>
<p>Here we create an additional property in the class to store the selected item of the list box. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5e630a38-5d4f-4fe6-8e8f-abf9af154d4c" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;max-height:300px;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">State</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> SelectedCity</span><br />     <span style="background:#ffffff;color:#000000;">{ </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt; Cities</span><br />     <span style="background:#ffffff;color:#000000;">{ </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>We can get the selected item value by using SelectedItem property of listbox using data binding. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1788b73e-ad23-44ca-bcd1-a23f75e3f6a4" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;max-height:300px;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListBox</span><span style="background:#ffffff;color:#ff0000;"> HorizontalContentAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot;</span><span style="background:#ffffff;color:#000000;"> </span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> SelectedItem</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Path</span><span style="background:#ffffff;color:#0000ff;">=SelectedCity}&quot;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> ItemsSource</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Cities}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Rest is quite easy, we just display the selected city in the combo box. </p>
<p>Here is a complete C# code of the program. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3e4dd83c-233f-4cc7-8f20-a3008f490eec" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Collections.ObjectModel;</span><br /> <span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Windows;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">namespace</span><span style="background:#ffffff;color:#000000;"> WpfComboList</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#808080;">///</span><span style="background:#ffffff;color:#008000;"> </span><span style="background:#ffffff;color:#808080;">&lt;summary&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#808080;">///</span><span style="background:#ffffff;color:#008000;"> Interaction logic for MainWindow.xaml</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#808080;">///</span><span style="background:#ffffff;color:#008000;"> </span><span style="background:#ffffff;color:#808080;">&lt;/summary&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">partial</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">MainWindow</span><span style="background:#ffffff;color:#000000;"> : </span><span style="background:#ffffff;color:#2b91af;">Window</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">State</span><span style="background:#ffffff;color:#000000;">&gt; States = </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">State</span><span style="background:#ffffff;color:#000000;">&gt;();</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> MainWindow()</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;">InitializeComponent();</span></p>
<p>             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt; maryland = </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt;();</span></p>
<p>             <span style="background:#ffffff;color:#000000;">maryland.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;Frederick&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br />             <span style="background:#ffffff;color:#000000;">maryland.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;German Town&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br />             <span style="background:#ffffff;color:#000000;">maryland.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;Baltimore&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br />             <span style="background:#ffffff;color:#000000;">maryland.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;Annapolis&quot;</span><span style="background:#ffffff;color:#000000;">);</span></p>
<p>             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt; texas = </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt;();</span></p>
<p>             <span style="background:#ffffff;color:#000000;">texas.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;Houston&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br />             <span style="background:#ffffff;color:#000000;">texas.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;Dallas&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br />             <span style="background:#ffffff;color:#000000;">texas.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;San Antonio&quot;</span><span style="background:#ffffff;color:#000000;">);</span></p>
<p>             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt; california = </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt;();</span></p>
<p>             <span style="background:#ffffff;color:#000000;">california.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;Los Angeles&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br />             <span style="background:#ffffff;color:#000000;">california.Add(</span><span style="background:#ffffff;color:#a31515;">&quot;Fremont&quot;</span><span style="background:#ffffff;color:#000000;">);</span></p>
<p>             <span style="background:#ffffff;color:#000000;">States.Add(</span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">State</span><span style="background:#ffffff;color:#000000;">() { Cities = maryland });</span><br />             <span style="background:#ffffff;color:#000000;">States.Add(</span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">State</span><span style="background:#ffffff;color:#000000;">() { Cities = texas });</span><br />             <span style="background:#ffffff;color:#000000;">States.Add(</span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">State</span><span style="background:#ffffff;color:#000000;">() { Cities = california });</span></p>
<p>             <span style="background:#ffffff;color:#000000;">DataContext = States;</span><br />         <span style="background:#ffffff;color:#000000;">}</span><br />     <span style="background:#ffffff;color:#000000;">}</span><br />     <span style="background:#ffffff;color:#000000;"></span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">State</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> SelectedCity</span><br />         <span style="background:#ffffff;color:#000000;">{ </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ObservableCollection</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">&gt; Cities</span><br />         <span style="background:#ffffff;color:#000000;">{ </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span><br />     <span style="background:#ffffff;color:#000000;">}</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>And here is Complete XAML code of the program. </p>
<p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:83b2c3a2-fd86-4f38-926e-dfa3be82d0d9" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Window</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Class</span><span style="background:#ffffff;color:#0000ff;">=&quot;WpfComboList.MainWindow&quot;</span><br />        <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&#038;quot" rel="nofollow">http://schemas.microsoft.com/winfx/2006/xaml/presentation&#038;quot</a>;</span><br />        <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">x</span><span style="background:#ffffff;color:#0000ff;">=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml&#038;quot" rel="nofollow">http://schemas.microsoft.com/winfx/2006/xaml&#038;quot</a>;</span><br />        <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> Title</span><span style="background:#ffffff;color:#0000ff;">=&quot;List In Combo&quot;</span><span style="background:#ffffff;color:#ff0000;"> Height</span><span style="background:#ffffff;color:#0000ff;">=&quot;350&quot;</span><span style="background:#ffffff;color:#ff0000;"> Width</span><span style="background:#ffffff;color:#0000ff;">=&quot;525&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ComboBox</span><span style="background:#ffffff;color:#ff0000;"> HorizontalContentAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot;</span><span style="background:#ffffff;color:#ff0000;"> Height</span><span style="background:#ffffff;color:#0000ff;">=&quot;35&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;5&quot;</span><span style="background:#ffffff;color:#ff0000;"> ItemsSource</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ComboBox.ItemContainerStyle</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#a31515;">Type</span><span style="background:#ffffff;color:#ff0000;"> ComboBoxItem}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;Template&quot;&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter.Value</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ControlTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><span style="background:#ffffff;color:#ff0000;"> BorderBrush</span><span style="background:#ffffff;color:#0000ff;">=&quot;Brown&quot;&gt;</span><br />                                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListBox</span><span style="background:#ffffff;color:#ff0000;"> HorizontalContentAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot;</span><span style="background:#ffffff;color:#000000;"> </span><br />                                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> SelectedItem</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Path</span><span style="background:#ffffff;color:#0000ff;">=SelectedCity}&quot;</span><br />                                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> ItemsSource</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Cities}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ControlTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Setter.Value</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ComboBox.ItemContainerStyle</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ComboBox.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> VerticalAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Center&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Path</span><span style="background:#ffffff;color:#0000ff;">=SelectedCity}&quot;/&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ComboBox.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ComboBox</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br /> <span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Window</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
</p>
<p>Here is an output of the program when we open the Combo box. </p>
<p><a href="http://zamjad.files.wordpress.com/2013/05/listincombo_1.jpg"><img title="ListInCombo_1" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="ListInCombo_1" src="http://zamjad.files.wordpress.com/2013/05/listincombo_1_thumb.jpg?w=504&#038;h=394" width="504" height="394" /></a></p>
<p>And here is an output when we select something from the listbox. </p>
<p><a href="http://zamjad.files.wordpress.com/2013/05/listincombo_2.jpg"><img title="ListInCombo_2" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="ListInCombo_2" src="http://zamjad.files.wordpress.com/2013/05/listincombo_2_thumb.jpg?w=504&#038;h=337" width="504" height="337" /></a></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/category/wpf/binding/'>Binding</a>, <a href='http://zamjad.wordpress.com/category/c/'>C#</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/combobox-controls-wpf/'>ComboBox</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/'>Controls</a>, <a href='http://zamjad.wordpress.com/category/wpf/template-wpf/datatemplate-template-wpf-wpf/'>DataTemplate</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/listbox-controls-wpf/'>ListBox</a>, <a href='http://zamjad.wordpress.com/category/wpf/style/'>Style</a>, <a href='http://zamjad.wordpress.com/category/wpf/template-wpf/'>Template</a>, <a href='http://zamjad.wordpress.com/category/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/category/xaml/'>XAML</a> Tagged: <a href='http://zamjad.wordpress.com/tag/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/tag/binding/'>Binding</a>, <a href='http://zamjad.wordpress.com/tag/c/'>C#</a>, <a href='http://zamjad.wordpress.com/tag/combobox/'>ComboBox</a>, <a href='http://zamjad.wordpress.com/tag/control/'>Control</a>, <a href='http://zamjad.wordpress.com/tag/controls/'>Controls</a>, <a href='http://zamjad.wordpress.com/tag/data-binding/'>Data Binding</a>, <a href='http://zamjad.wordpress.com/tag/datatemplate/'>DataTemplate</a>, <a href='http://zamjad.wordpress.com/tag/itemcontainerstyle/'>ItemContainerStyle</a>, <a href='http://zamjad.wordpress.com/tag/listbox/'>ListBox</a>, <a href='http://zamjad.wordpress.com/tag/selecteditem/'>SelectedItem</a>, <a href='http://zamjad.wordpress.com/tag/style/'>Style</a>, <a href='http://zamjad.wordpress.com/tag/template/'>Template</a>, <a href='http://zamjad.wordpress.com/tag/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/tag/xaml/'>XAML</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1981/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1981/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1981&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2013/05/15/listbox-in-combobox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2013/05/listincombo_1_thumb.jpg" medium="image">
			<media:title type="html">ListInCombo_1</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2013/05/listincombo_2_thumb.jpg" medium="image">
			<media:title type="html">ListInCombo_2</media:title>
		</media:content>
	</item>
		<item>
		<title>Switching to MVVM Part 2</title>
		<link>http://zamjad.wordpress.com/2013/03/29/switching-to-mvvm-part-2/</link>
		<comments>http://zamjad.wordpress.com/2013/03/29/switching-to-mvvm-part-2/#comments</comments>
		<pubDate>Sat, 30 Mar 2013 04:43:40 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Command]]></category>
		<category><![CDATA[Factory]]></category>
		<category><![CDATA[ICommand]]></category>
		<category><![CDATA[IDisposable]]></category>
		<category><![CDATA[INotifyPropertyChanged]]></category>
		<category><![CDATA[Mediator]]></category>
		<category><![CDATA[WeakReference]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1976</guid>
		<description><![CDATA[We saw one example to see how can we move the existing project using MVVM here. But those are just the first steps in that direction not a complete solution. In any big project we are not using MVVM alone, but use it with other high level patterns. The most commonly used patterns are Command [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1976&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We saw one example to see how can we move the existing project using MVVM <a href="http://zamjad.wordpress.com/2010/07/15/switching-to-mvvm/">here</a>. But those are just the first steps in that direction not a complete solution. In any big project we are not using MVVM alone, but use it with other high level patterns. The most commonly used patterns are Command pattern, Mediator pattern and Event to Command pattern. </p>
<p><a href="http://zamjad.files.wordpress.com/2013/03/wpfpattern.jpg"><img title="WPFPattern" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="WPFPattern" src="http://zamjad.files.wordpress.com/2013/03/wpfpattern_thumb.jpg?w=516&#038;h=421" width="516" height="421" /></a></p>
<p>It is better to have some reusable classes to implement some functionality. We have one implementation of ICommand interface <a href="http://zamjad.wordpress.com/2011/08/04/implement-icommand-interface/">here</a>. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7e37628e-457c-4ff5-8e61-ff4ceddfe6c2" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System;</span><br /> <span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Windows.Input;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">namespace</span><span style="background:#ffffff;color:#000000;"> WpfPattern</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">    </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">sealed</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">MyCommand</span><span style="background:#ffffff;color:#000000;">&lt;T1, T2&gt; : </span><span style="background:#ffffff;color:#2b91af;">ICommand</span><br /> <span style="background:#ffffff;color:#000000;">    {</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;"> _FunctionWithParam;</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;">&lt;T1&gt; _Function;</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">Func</span><span style="background:#ffffff;color:#000000;">&lt;T2, </span><span style="background:#ffffff;color:#0000ff;">bool</span><span style="background:#ffffff;color:#000000;">&gt; _Predicate;</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> MyCommand(</span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;"> functionWithoutParam)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            _FunctionWithParam = functionWithoutParam;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> MyCommand(</span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;">&lt;T1&gt; function)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            _Function = function;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> MyCommand(</span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;"> functionWithoutParam, </span><span style="background:#ffffff;color:#2b91af;">Func</span><span style="background:#ffffff;color:#000000;">&lt;T2, </span><span style="background:#ffffff;color:#0000ff;">bool</span><span style="background:#ffffff;color:#000000;">&gt; predicate)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            _FunctionWithParam = functionWithoutParam;</span><br /> <span style="background:#ffffff;color:#000000;">            _Predicate = predicate;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> MyCommand(</span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;">&lt;T1&gt; function, </span><span style="background:#ffffff;color:#2b91af;">Func</span><span style="background:#ffffff;color:#000000;">&lt;T2, </span><span style="background:#ffffff;color:#0000ff;">bool</span><span style="background:#ffffff;color:#000000;">&gt; predicate)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            _Function = function;</span><br /> <span style="background:#ffffff;color:#000000;">            _Predicate = predicate;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> Execute(T1 parameter)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (_Function != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                _Function(parameter);</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">bool</span><span style="background:#ffffff;color:#000000;"> CanExecute(T2 parameter)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (_Predicate != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> _Predicate(parameter);</span><br /> <span style="background:#ffffff;color:#000000;">            }</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">true</span><span style="background:#ffffff;color:#000000;">;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #region</span><span style="background:#ffffff;color:#000000;"> Implement ICommand interface</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">bool</span><span style="background:#ffffff;color:#000000;"> CanExecute(</span><span style="background:#ffffff;color:#0000ff;">object</span><span style="background:#ffffff;color:#000000;"> parameter)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> CanExecute((T2)parameter);</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> Execute(</span><span style="background:#ffffff;color:#0000ff;">object</span><span style="background:#ffffff;color:#000000;"> parameter)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (_FunctionWithParam != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                _FunctionWithParam();</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">else</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                Execute((T1)parameter);</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">event</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">EventHandler</span><span style="background:#ffffff;color:#000000;"> CanExecuteChanged</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">add</span><span style="background:#ffffff;color:#000000;"> { </span><span style="background:#ffffff;color:#2b91af;">CommandManager</span><span style="background:#ffffff;color:#000000;">.RequerySuggested += </span><span style="background:#ffffff;color:#0000ff;">value</span><span style="background:#ffffff;color:#000000;">; }</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">remove</span><span style="background:#ffffff;color:#000000;"> { </span><span style="background:#ffffff;color:#2b91af;">CommandManager</span><span style="background:#ffffff;color:#000000;">.RequerySuggested -= </span><span style="background:#ffffff;color:#0000ff;">value</span><span style="background:#ffffff;color:#000000;">; }</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #endregion</span><br /> <span style="background:#ffffff;color:#000000;">    }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>Event to command pattern is define <a href="http://zamjad.wordpress.com/2011/08/08/convert-event-into-command-in-mvvm-model-revisited/">here</a>. Here are two classes to implement this functionality. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bf69e2ab-d990-408f-a211-441969604446" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Windows;</span><br /> <span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Windows.Input;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">namespace</span><span style="background:#ffffff;color:#000000;"> WpfPattern</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">    </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">sealed</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">EventBehavior</span><br /> <span style="background:#ffffff;color:#000000;">    {</span><br /> <span style="background:#ffffff;color:#0000ff;">        #region</span><span style="background:#ffffff;color:#000000;"> Fields</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">DependencyProperty</span><span style="background:#ffffff;color:#000000;"> property;</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">RoutedEvent</span><span style="background:#ffffff;color:#000000;"> routedEvent;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #endregion</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #region</span><span style="background:#ffffff;color:#000000;"> Constructor</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> EventBehavior(</span><span style="background:#ffffff;color:#2b91af;">RoutedEvent</span><span style="background:#ffffff;color:#000000;"> routedEvent)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">this</span><span style="background:#ffffff;color:#000000;">.routedEvent = routedEvent;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #endregion</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> CallBack(</span><span style="background:#ffffff;color:#2b91af;">DependencyObject</span><span style="background:#ffffff;color:#000000;"> obj, </span><span style="background:#ffffff;color:#2b91af;">DependencyPropertyChangedEventArgs</span><span style="background:#ffffff;color:#000000;"> args)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#2b91af;">UIElement</span><span style="background:#ffffff;color:#000000;"> element = obj </span><span style="background:#ffffff;color:#0000ff;">as</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">UIElement</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p> <span style="background:#ffffff;color:#000000;">            property = args.Property;</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (element != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (args.OldValue != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">                {</span><br /> <span style="background:#ffffff;color:#000000;">                    element.AddHandler(routedEvent, </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">RoutedEventHandler</span><span style="background:#ffffff;color:#000000;">(EventHandler));</span><br /> <span style="background:#ffffff;color:#000000;">                }</span></p>
<p> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (args.NewValue != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">                {</span><br /> <span style="background:#ffffff;color:#000000;">                    element.AddHandler(routedEvent, </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">RoutedEventHandler</span><span style="background:#ffffff;color:#000000;">(EventHandler));</span><br /> <span style="background:#ffffff;color:#000000;">                }</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> EventHandler(</span><span style="background:#ffffff;color:#0000ff;">object</span><span style="background:#ffffff;color:#000000;"> sender, </span><span style="background:#ffffff;color:#2b91af;">RoutedEventArgs</span><span style="background:#ffffff;color:#000000;"> e)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#2b91af;">DependencyObject</span><span style="background:#ffffff;color:#000000;"> obj = sender </span><span style="background:#ffffff;color:#0000ff;">as</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">DependencyObject</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (obj != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#2b91af;">ICommand</span><span style="background:#ffffff;color:#000000;"> command = obj.GetValue(property) </span><span style="background:#ffffff;color:#0000ff;">as</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ICommand</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (command != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">                {</span><br /> <span style="background:#ffffff;color:#000000;">                    </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (command.CanExecute(e))</span><br /> <span style="background:#ffffff;color:#000000;">                    {</span><br /> <span style="background:#ffffff;color:#000000;">                        command.Execute(e);</span><br /> <span style="background:#ffffff;color:#000000;">                    }</span><br /> <span style="background:#ffffff;color:#000000;">                }</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">        } </span><br /> <span style="background:#ffffff;color:#000000;">    }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>And here is one template factory class. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:47ccb634-1cd4-4fbc-b14b-bbe2cb20b33b" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Windows;</span><br /> <span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Windows.Input;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">namespace</span><span style="background:#ffffff;color:#000000;"> WpfPattern</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">    </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">sealed</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">BehaviorFactory</span><span style="background:#ffffff;color:#000000;">&lt;T&gt;</span><br /> <span style="background:#ffffff;color:#000000;">    {</span><br /> <span style="background:#ffffff;color:#0000ff;">        #region</span><span style="background:#ffffff;color:#000000;"> Private Constructor</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> BehaviorFactory()</span><br /> <span style="background:#ffffff;color:#000000;">        {</span></p>
<p> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #endregion</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">static</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">DependencyProperty</span><span style="background:#ffffff;color:#000000;"> CreateBehavior(</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> name, </span><span style="background:#ffffff;color:#2b91af;">RoutedEvent</span><span style="background:#ffffff;color:#000000;"> routedEvent)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#2b91af;">EventBehavior</span><span style="background:#ffffff;color:#000000;"> eb = </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">EventBehavior</span><span style="background:#ffffff;color:#000000;">(routedEvent);</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#2b91af;">DependencyProperty</span><span style="background:#ffffff;color:#000000;"> dp = </span><span style="background:#ffffff;color:#2b91af;">DependencyProperty</span><span style="background:#ffffff;color:#000000;">.RegisterAttached(name, </span><span style="background:#ffffff;color:#0000ff;">typeof</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#2b91af;">ICommand</span><span style="background:#ffffff;color:#000000;">), </span><span style="background:#ffffff;color:#0000ff;">typeof</span><span style="background:#ffffff;color:#000000;">(T),</span><br /> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">PropertyMetadata</span><span style="background:#ffffff;color:#000000;">(eb.CallBack));</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> dp;</span><br /> <span style="background:#ffffff;color:#000000;">        } </span></p>
<p> <span style="background:#ffffff;color:#000000;">    }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<blockquote><p>&#160;</p>
</blockquote>
<p>Here is a mediator class defined <a href="http://zamjad.wordpress.com/2012/03/05/using-mediator-to-communicate-between-user-controls-part-7/">here</a>. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5b7b205d-371c-4c90-ae10-b7ff90675107" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">namespace</span><span style="background:#ffffff;color:#000000;"> WpfPattern</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">    </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><br /> <span style="background:#ffffff;color:#000000;">    {</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">WeakReference</span><span style="background:#ffffff;color:#000000;"> weakReference;</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> WeakReferenceWrapper(</span><span style="background:#ffffff;color:#0000ff;">object</span><span style="background:#ffffff;color:#000000;"> receiever, </span><span style="background:#ffffff;color:#2b91af;">Delegate</span><span style="background:#ffffff;color:#000000;"> action)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            weakReference = </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">WeakReference</span><span style="background:#ffffff;color:#000000;">(receiever);</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">this</span><span style="background:#ffffff;color:#000000;">.Action = action;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">Delegate</span><span style="background:#ffffff;color:#000000;"> Action</span><br /> <span style="background:#ffffff;color:#000000;">        { </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span><br /> <span style="background:#ffffff;color:#000000;">    }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>And here is Mediator class. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:311736c8-4a9f-44dd-ab80-53dabdcc2052" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System;</span><br /> <span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Collections.Generic;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">namespace</span><span style="background:#ffffff;color:#000000;"> WpfPattern</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">    </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">sealed</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">Mediator</span><br /> <span style="background:#ffffff;color:#000000;">    {</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">Dictionary</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">, </span><span style="background:#ffffff;color:#2b91af;">List</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><span style="background:#ffffff;color:#000000;">&gt;&gt; actions =</span><br /> <span style="background:#ffffff;color:#000000;">             </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">Dictionary</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;">, </span><span style="background:#ffffff;color:#2b91af;">List</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><span style="background:#ffffff;color:#000000;">&gt;&gt;();</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> Mediator()</span><br /> <span style="background:#ffffff;color:#000000;">         {</span><br /> <span style="background:#ffffff;color:#000000;">         }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> Register&lt;T&gt;(</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> message, </span><span style="background:#ffffff;color:#0000ff;">object</span><span style="background:#ffffff;color:#000000;"> receiever, </span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;">&lt;T&gt; action)</span><br /> <span style="background:#ffffff;color:#000000;">         {</span><br /> <span style="background:#ffffff;color:#000000;">             </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (message == </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">throw</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ArgumentNullException</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#a31515;">&quot;message&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br /> <span style="background:#ffffff;color:#000000;">             }</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (action == </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">throw</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ArgumentNullException</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#a31515;">&quot;action&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br /> <span style="background:#ffffff;color:#000000;">             }</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">lock</span><span style="background:#ffffff;color:#000000;"> (actions)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (!actions.ContainsKey(message))</span><br /> <span style="background:#ffffff;color:#000000;">                 {</span><br /> <span style="background:#ffffff;color:#000000;">                     actions[message] = </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">List</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><span style="background:#ffffff;color:#000000;">&gt;();</span><br /> <span style="background:#ffffff;color:#000000;">                 }</span></p>
<p> <span style="background:#ffffff;color:#000000;">                actions[message].Add(</span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><span style="background:#ffffff;color:#000000;">(receiever, action));</span><br /> <span style="background:#ffffff;color:#000000;">             }</span><br /> <span style="background:#ffffff;color:#000000;">         }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> UnRegister&lt;T&gt;(</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> message, </span><span style="background:#ffffff;color:#0000ff;">object</span><span style="background:#ffffff;color:#000000;"> receiever, </span><span style="background:#ffffff;color:#2b91af;">Action</span><span style="background:#ffffff;color:#000000;">&lt;T&gt; action)</span><br /> <span style="background:#ffffff;color:#000000;">         {</span><br /> <span style="background:#ffffff;color:#000000;">             </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (message == </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">throw</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ArgumentNullException</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#a31515;">&quot;message&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br /> <span style="background:#ffffff;color:#000000;">             }</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (action == </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">throw</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ArgumentNullException</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#a31515;">&quot;action&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br /> <span style="background:#ffffff;color:#000000;">             }</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">lock</span><span style="background:#ffffff;color:#000000;"> (actions)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (actions.ContainsKey(message))</span><br /> <span style="background:#ffffff;color:#000000;">                 {</span><br /> <span style="background:#ffffff;color:#000000;">                     </span><span style="background:#ffffff;color:#2b91af;">List</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><span style="background:#ffffff;color:#000000;">&gt; actionlist = actions[message];</span></p>
<p> <span style="background:#ffffff;color:#000000;">                    actionlist.Remove(</span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><span style="background:#ffffff;color:#000000;">(receiever, action));</span></p>
<p> <span style="background:#ffffff;color:#000000;">                    </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (actionlist.Count == 0)</span><br /> <span style="background:#ffffff;color:#000000;">                     {</span><br /> <span style="background:#ffffff;color:#000000;">                         actions.Remove(message);</span><br /> <span style="background:#ffffff;color:#000000;">                     }</span><br /> <span style="background:#ffffff;color:#000000;">                 }</span><br /> <span style="background:#ffffff;color:#000000;">             }</span><br /> <span style="background:#ffffff;color:#000000;">         }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> Send&lt;T&gt;(</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> message, T param)</span><br /> <span style="background:#ffffff;color:#000000;">         {</span><br /> <span style="background:#ffffff;color:#000000;">             </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (message == </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">throw</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ArgumentNullException</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#a31515;">&quot;message&quot;</span><span style="background:#ffffff;color:#000000;">);</span><br /> <span style="background:#ffffff;color:#000000;">             }</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">lock</span><span style="background:#ffffff;color:#000000;"> (actions)</span><br /> <span style="background:#ffffff;color:#000000;">             {</span><br /> <span style="background:#ffffff;color:#000000;">                 </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (actions.ContainsKey(message))</span><br /> <span style="background:#ffffff;color:#000000;">                 {</span><br /> <span style="background:#ffffff;color:#000000;">                     </span><span style="background:#ffffff;color:#2b91af;">List</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceWrapper</span><span style="background:#ffffff;color:#000000;">&gt; actionslist = actions[message];</span></p>
<p> <span style="background:#ffffff;color:#000000;">                    </span><span style="background:#ffffff;color:#0000ff;">foreach</span><span style="background:#ffffff;color:#000000;"> (</span><span style="background:#ffffff;color:#0000ff;">var</span><span style="background:#ffffff;color:#000000;"> action </span><span style="background:#ffffff;color:#0000ff;">in</span><span style="background:#ffffff;color:#000000;"> actionslist)</span><br /> <span style="background:#ffffff;color:#000000;">                     {</span><br /> <span style="background:#ffffff;color:#000000;">                         action.Action.DynamicInvoke(param);</span><br /> <span style="background:#ffffff;color:#000000;">                     }</span><br /> <span style="background:#ffffff;color:#000000;">                 }</span><br /> <span style="background:#ffffff;color:#000000;">             }</span><br /> <span style="background:#ffffff;color:#000000;">         }</span><br /> <span style="background:#ffffff;color:#000000;">    }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Similarly we defined the ViewModel based class <a href="http://zamjad.wordpress.com/2011/05/25/define-base-class-for-viewmodel-revisited/">here</a> to reuse some common functionality. Here is our ViewModelBase class. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:55f083ea-1af0-4113-9fc6-0576869f89e7" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System;</span><br /> <span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.ComponentModel;</span><br /> <span style="background:#ffffff;color:#0000ff;">using</span><span style="background:#ffffff;color:#000000;"> System.Windows.Input;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">namespace</span><span style="background:#ffffff;color:#000000;"> WpfPattern</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">    </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">abstract</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ViewModelBase</span><span style="background:#ffffff;color:#000000;"> : </span><span style="background:#ffffff;color:#2b91af;">INotifyPropertyChanged</span><span style="background:#ffffff;color:#000000;">, </span><span style="background:#ffffff;color:#2b91af;">IDisposable</span><br /> <span style="background:#ffffff;color:#000000;">    {</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">private</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">bool</span><span style="background:#ffffff;color:#000000;"> _disposed;</span><br /> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">event</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">EventHandler</span><span style="background:#ffffff;color:#000000;"> RequestClose;</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">ICommand</span><span style="background:#ffffff;color:#000000;"> ExitCommand</span><br /> <span style="background:#ffffff;color:#000000;">        { </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #region</span><span style="background:#ffffff;color:#000000;"> Constructor</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> ViewModelBase()</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            _disposed = </span><span style="background:#ffffff;color:#0000ff;">false</span><span style="background:#ffffff;color:#000000;">;</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #endregion</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> Close()</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#2b91af;">EventHandler</span><span style="background:#ffffff;color:#000000;"> handler = </span><span style="background:#ffffff;color:#0000ff;">this</span><span style="background:#ffffff;color:#000000;">.RequestClose;</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (handler != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                handler(</span><span style="background:#ffffff;color:#0000ff;">this</span><span style="background:#ffffff;color:#000000;">, </span><span style="background:#ffffff;color:#2b91af;">EventArgs</span><span style="background:#ffffff;color:#000000;">.Empty);</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #region</span><span style="background:#ffffff;color:#000000;"> NotifyPropertyChanged Methods</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> RaisePropertyChanged(</span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> propertyName)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#2b91af;">PropertyChangedEventHandler</span><span style="background:#ffffff;color:#000000;"> handler = PropertyChanged;</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (handler != </span><span style="background:#ffffff;color:#0000ff;">null</span><span style="background:#ffffff;color:#000000;">)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                handler(</span><span style="background:#ffffff;color:#0000ff;">this</span><span style="background:#ffffff;color:#000000;">, </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">PropertyChangedEventArgs</span><span style="background:#ffffff;color:#000000;">(propertyName));</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">event</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">PropertyChangedEventHandler</span><span style="background:#ffffff;color:#000000;"> PropertyChanged;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #endregion</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #region</span><span style="background:#ffffff;color:#000000;"> Disposable Methods</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> Dispose()</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            Dispose(</span><span style="background:#ffffff;color:#0000ff;">true</span><span style="background:#ffffff;color:#000000;">);</span></p>
<p> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#008000;">// Use SupressFinalize in case a subclass </span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#008000;">// of this type implements a finalizer. </span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#2b91af;">GC</span><span style="background:#ffffff;color:#000000;">.SuppressFinalize(</span><span style="background:#ffffff;color:#0000ff;">this</span><span style="background:#ffffff;color:#000000;">);</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#000000;">        </span><span style="background:#ffffff;color:#0000ff;">protected</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">virtual</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> Dispose(</span><span style="background:#ffffff;color:#0000ff;">bool</span><span style="background:#ffffff;color:#000000;"> disposing)</span><br /> <span style="background:#ffffff;color:#000000;">        {</span><br /> <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (!_disposed)</span><br /> <span style="background:#ffffff;color:#000000;">            {</span><br /> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (disposing)</span><br /> <span style="background:#ffffff;color:#000000;">                {</span><br /> <span style="background:#ffffff;color:#000000;">                    </span><span style="background:#ffffff;color:#008000;">// Dispose Managed Resource </span><br /> <span style="background:#ffffff;color:#000000;">                }</span></p>
<p> <span style="background:#ffffff;color:#000000;">                </span><span style="background:#ffffff;color:#008000;">// Dispose Unmanaged Resources </span></p>
<p> <span style="background:#ffffff;color:#000000;">                _disposed = </span><span style="background:#ffffff;color:#0000ff;">true</span><span style="background:#ffffff;color:#000000;">;</span><br /> <span style="background:#ffffff;color:#000000;">            }</span><br /> <span style="background:#ffffff;color:#000000;">        }</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">        #endregion</span><span style="background:#ffffff;color:#000000;"> </span><br /> <span style="background:#ffffff;color:#000000;">    }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>As we noticed from the above examples that these high level patterns internally uses further primitive patterns. For example, MVVM uses Command, Disposable and Notification pattern, Event to command uses Factory pattern and Mediator uses factory pattern. Here is a diagram to represent this relationship. </p>
<p><a href="http://zamjad.files.wordpress.com/2013/03/wpfpattern2.jpg"><img title="WPFPattern2" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="WPFPattern2" src="http://zamjad.files.wordpress.com/2013/03/wpfpattern2_thumb.jpg?w=500&#038;h=279" width="500" height="279" /></a></p>
<p>Here we assumed that we are creating a simple MVVM based WPF application. In more advanced scenarios which as when one view model may contain other view model, we may use composite pattern, in case of complex interaction between some utility classes, we may uses façade and in case of handling different interface we may select adaptor pattern. </p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/category/c/'>C#</a>, <a href='http://zamjad.wordpress.com/category/programming/design-patterns/'>Design Patterns</a>, <a href='http://zamjad.wordpress.com/category/wpf/mvvm-wpf/'>MVVM</a>, <a href='http://zamjad.wordpress.com/category/programming/'>Programming</a>, <a href='http://zamjad.wordpress.com/category/wpf/'>WPF</a> Tagged: <a href='http://zamjad.wordpress.com/tag/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/tag/c/'>C#</a>, <a href='http://zamjad.wordpress.com/tag/command/'>Command</a>, <a href='http://zamjad.wordpress.com/tag/design-patterns/'>Design Patterns</a>, <a href='http://zamjad.wordpress.com/tag/factory/'>Factory</a>, <a href='http://zamjad.wordpress.com/tag/icommand/'>ICommand</a>, <a href='http://zamjad.wordpress.com/tag/idisposable/'>IDisposable</a>, <a href='http://zamjad.wordpress.com/tag/inotifypropertychanged/'>INotifyPropertyChanged</a>, <a href='http://zamjad.wordpress.com/tag/mediator/'>Mediator</a>, <a href='http://zamjad.wordpress.com/tag/mvvm/'>MVVM</a>, <a href='http://zamjad.wordpress.com/tag/programming/'>Programming</a>, <a href='http://zamjad.wordpress.com/tag/weakreference/'>WeakReference</a>, <a href='http://zamjad.wordpress.com/tag/wpf/'>WPF</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1976/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1976&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2013/03/29/switching-to-mvvm-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2013/03/wpfpattern_thumb.jpg" medium="image">
			<media:title type="html">WPFPattern</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2013/03/wpfpattern2_thumb.jpg" medium="image">
			<media:title type="html">WPFPattern2</media:title>
		</media:content>
	</item>
		<item>
		<title>Named PART idiom</title>
		<link>http://zamjad.wordpress.com/2012/11/28/named-part-idiom/</link>
		<comments>http://zamjad.wordpress.com/2012/11/28/named-part-idiom/#comments</comments>
		<pubDate>Wed, 28 Nov 2012 06:09:23 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Controls]]></category>
		<category><![CDATA[ControlTemplate]]></category>
		<category><![CDATA[CustomControl]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[UserControl]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[Custom Control]]></category>
		<category><![CDATA[OnApplyTemplate]]></category>
		<category><![CDATA[TemplatePartAttribute]]></category>
		<category><![CDATA[User Control]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1964</guid>
		<description><![CDATA[We already saw an example of using PART_ template here and here. Now the question is if we want to use PART_ in our control then how can we do it. Let’s first create a custom control. The whole point is to override OnApplyTemplate method. In this method we will check the PART name and [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1964&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We already saw an example of using PART_ template <a href="http://zamjad.wordpress.com/2011/08/31/part-control-template/">here</a> and <a href="http://zamjad.wordpress.com/2012/07/11/up-sided-combobox/">here</a>. Now the question is if we want to use PART_ in our control then how can we do it. </p>
<p>Let’s first create a custom control. The whole point is to override OnApplyTemplate method. In this method we will check the PART name and then take appropriate action on it. Here is our simple example of OnApplyTemplate where we just change the foreground and background color of the control. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:63827cd0-4018-43f9-bea8-6669c476dd4d" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">override</span> <span style="color:#0000ff;">void</span> OnApplyTemplate()<br /> {<br />     <span style="color:#0000ff;">base</span>.OnApplyTemplate();</p>
<p>     <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">this</span>.Template != <span style="color:#0000ff;">null</span>)<br />     {<br />         <span style="color:#2b91af;">Control</span> c = <span style="color:#0000ff;">this</span>.Template.FindName(<span style="color:#a31515;">&quot;PART_MyPart&quot;</span>, <span style="color:#0000ff;">this</span>) <span style="color:#0000ff;">as</span> <span style="color:#2b91af;">Control</span>;</p>
<p>         <span style="color:#0000ff;">if</span> (c != <span style="color:#0000ff;">null</span>)<br />         {<br />             c.Background = <span style="color:#2b91af;">Brushes</span>.Blue;<br />             c.Foreground = <span style="color:#2b91af;">Brushes</span>.Yellow;<br />         }<br />     }<br /> }</div>
</p></div>
</p></div>
<p>&#160;</p>
<p>We also TemplatePart attribute to document this name. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:11e4dc8d-46ea-4b73-ab31-01b56d726c4d" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;">[<span style="color:#2b91af;">TemplatePart</span>(Name = <span style="color:#a31515;">&quot;PART_MyPart&quot;</span>, Type = <span style="color:#0000ff;">typeof</span>(<span style="color:#2b91af;">Control</span>))]<br /> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">MyCustomControl</span> : <span style="color:#2b91af;">Control</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is a complete code of our custom control. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ec211594-69c7-428a-a697-79bdbee10697" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="color:#0000ff;">using</span> System.Windows;<br /> <span style="color:#0000ff;">using</span> System.Windows.Controls;<br /> <span style="color:#0000ff;">using</span> System.Windows.Media;</p>
<p> <span style="color:#0000ff;">namespace</span> WpfNamedPart<br /> {<br />     [<span style="color:#2b91af;">TemplatePart</span>(Name = <span style="color:#a31515;">&quot;PART_MyPart&quot;</span>, Type = <span style="color:#0000ff;">typeof</span>(<span style="color:#2b91af;">Control</span>))]<br />     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">MyCustomControl</span> : <span style="color:#2b91af;">Control</span><br />     {<br />         <span style="color:#0000ff;">static</span> MyCustomControl()<br />         {<br />             DefaultStyleKeyProperty.OverrideMetadata(<span style="color:#0000ff;">typeof</span>(<span style="color:#2b91af;">MyCustomControl</span>), <span style="color:#0000ff;">new</span> <span style="color:#2b91af;">FrameworkPropertyMetadata</span>(<span style="color:#0000ff;">typeof</span>(<span style="color:#2b91af;">MyCustomControl</span>)));<br />         }</p>
<p>         <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">override</span> <span style="color:#0000ff;">void</span> OnApplyTemplate()<br />         {<br />             <span style="color:#0000ff;">base</span>.OnApplyTemplate();</p>
<p>             <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">this</span>.Template != <span style="color:#0000ff;">null</span>)<br />             {<br />                 <span style="color:#2b91af;">Control</span> c = <span style="color:#0000ff;">this</span>.Template.FindName(<span style="color:#a31515;">&quot;PART_MyPart&quot;</span>, <span style="color:#0000ff;">this</span>) <span style="color:#0000ff;">as</span> <span style="color:#2b91af;">Control</span>;</p>
<p>                 <span style="color:#0000ff;">if</span> (c != <span style="color:#0000ff;">null</span>)<br />                 {<br />                     c.Background = <span style="color:#2b91af;">Brushes</span>.Blue;<br />                     c.Foreground = <span style="color:#2b91af;">Brushes</span>.Yellow;<br />                 }<br />             }<br />         }<br />     }<br /> }</div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Now let’s use this custom control. In main window we are going to create two custom controls in stack panel. One defined the named part and the other doesn’t. Here is XAML of our main window. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:04d64317-1c47-4a80-a96e-493df6152812" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Window</span><span style="color:#ff0000;"> x</span><span style="color:#0000ff;">:</span><span style="color:#ff0000;">Class</span><span style="color:#0000ff;">=&quot;WpfNamedPart.MainWindow&quot;</span><br />        <span style="color:#ff0000;"> xmlns</span><span style="color:#0000ff;">=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&#038;quot" rel="nofollow">http://schemas.microsoft.com/winfx/2006/xaml/presentation&#038;quot</a>;</span><br />        <span style="color:#ff0000;"> xmlns</span><span style="color:#0000ff;">:</span><span style="color:#ff0000;">x</span><span style="color:#0000ff;">=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml&#038;quot" rel="nofollow">http://schemas.microsoft.com/winfx/2006/xaml&#038;quot</a>;</span><br />        <span style="color:#ff0000;"> xmlns</span><span style="color:#0000ff;">:</span><span style="color:#ff0000;">local</span><span style="color:#0000ff;">=&quot;clr-namespace:WpfNamedPart&quot;</span><br />        <span style="color:#ff0000;"> Title</span><span style="color:#0000ff;">=&quot;Named Part Demo&quot;</span><span style="color:#ff0000;"> Height</span><span style="color:#0000ff;">=&quot;300&quot;</span><span style="color:#ff0000;"> Width</span><span style="color:#0000ff;">=&quot;400&quot;&gt;</span><br />     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">StackPanel</span><span style="color:#0000ff;">&gt;</span><br />         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl</span><span style="color:#ff0000;"> Margin</span><span style="color:#0000ff;">=&quot;5&quot;&gt;</span><br />             <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl.Template</span><span style="color:#0000ff;">&gt;</span><br />                 <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ControlTemplate</span><span style="color:#0000ff;">&gt;</span><br />                     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Grid</span><span style="color:#0000ff;">&gt;</span><br />                         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Button</span><span style="color:#ff0000;"> x</span><span style="color:#0000ff;">:</span><span style="color:#ff0000;">Name</span><span style="color:#0000ff;">=&quot;PART_MyPart&quot;</span><span style="color:#ff0000;"> Width</span><span style="color:#0000ff;">=&quot;150&quot;</span><span style="color:#ff0000;"> Height</span><span style="color:#0000ff;">=&quot;35&quot;</span><span style="color:#ff0000;"> Content</span><span style="color:#0000ff;">=&quot;Named Part defined&quot;/&gt;</span><br />                     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Grid</span><span style="color:#0000ff;">&gt;</span><br />                 <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ControlTemplate</span><span style="color:#0000ff;">&gt;</span><br />             <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl.Template</span><span style="color:#0000ff;">&gt;</span><br />         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl</span><span style="color:#0000ff;">&gt;</span><br />         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl</span><span style="color:#ff0000;"> Margin</span><span style="color:#0000ff;">=&quot;5&quot;&gt;</span><br />             <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl.Template</span><span style="color:#0000ff;">&gt;</span><br />                 <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ControlTemplate</span><span style="color:#0000ff;">&gt;</span><br />                     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Grid</span><span style="color:#0000ff;">&gt;</span><br />                         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Button</span><span style="color:#ff0000;"> Width</span><span style="color:#0000ff;">=&quot;150&quot;</span><span style="color:#ff0000;"> Height</span><span style="color:#0000ff;">=&quot;35&quot;</span><span style="color:#ff0000;"> Content</span><span style="color:#0000ff;">=&quot;Named Part not defined&quot;/&gt;</span><br />                     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Grid</span><span style="color:#0000ff;">&gt;</span><br />                 <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ControlTemplate</span><span style="color:#0000ff;">&gt;</span><br />             <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl.Template</span><span style="color:#0000ff;">&gt;</span><br />         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyCustomControl</span><span style="color:#0000ff;">&gt;</span><br />     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">StackPanel</span><span style="color:#0000ff;">&gt;</span><br /> <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Window</span><span style="color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is the output of this program. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/namedpartdemo.jpg"><img title="NamedPartDemo" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="NamedPartDemo" src="http://zamjad.files.wordpress.com/2012/11/namedpartdemo_thumb.jpg?w=404&#038;h=304" width="404" height="304" /></a></p>
<p>The output of the program clearly shows that template would apply if we specify the correct name of the control in control template. </p>
<p>Now there is a question, why not do the same thing in User control. We can define the same method in our user control class. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:111b91a4-6a8b-43e4-a53f-ac6af1e30477" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="color:#0000ff;">using</span> System.Windows;<br /> <span style="color:#0000ff;">using</span> System.Windows.Controls;<br /> <span style="color:#0000ff;">using</span> System.Windows.Media;</p>
<p> <span style="color:#0000ff;">namespace</span> WpfNamedPart<br /> {<br />     <span style="color:#808080;">///</span><span style="color:#008000;"> </span><span style="color:#808080;">&lt;summary&gt;</span><br />     <span style="color:#808080;">///</span><span style="color:#008000;"> Interaction logic for MyUserControl.xaml</span><br />     <span style="color:#808080;">///</span><span style="color:#008000;"> </span><span style="color:#808080;">&lt;/summary&gt;</span><br />     [<span style="color:#2b91af;">TemplatePart</span>(Name = <span style="color:#a31515;">&quot;PART_MyPart&quot;</span>, Type = <span style="color:#0000ff;">typeof</span>(<span style="color:#2b91af;">Control</span>))]<br />     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">partial</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">MyUserControl</span> : <span style="color:#2b91af;">UserControl</span><br />     {<br />         <span style="color:#0000ff;">public</span> MyUserControl()<br />         {<br />             InitializeComponent();<br />         }</p>
<p>         <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">override</span> <span style="color:#0000ff;">void</span> OnApplyTemplate()<br />         {<br />             <span style="color:#0000ff;">base</span>.OnApplyTemplate();</p>
<p>             <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">this</span>.Template != <span style="color:#0000ff;">null</span>)<br />             {<br />                 <span style="color:#2b91af;">Control</span> c = <span style="color:#0000ff;">this</span>.Template.FindName(<span style="color:#a31515;">&quot;PART_MyPart&quot;</span>, <span style="color:#0000ff;">this</span>) <span style="color:#0000ff;">as</span> <span style="color:#2b91af;">Control</span>;</p>
<p>                 <span style="color:#0000ff;">if</span> (c != <span style="color:#0000ff;">null</span>)<br />                 {<br />                     c.Background = <span style="color:#2b91af;">Brushes</span>.Blue;<br />                     c.Foreground = <span style="color:#2b91af;">Brushes</span>.Yellow;<br />                 }<br />             }<br />         }<br />     }<br /> }</div>
</p></div>
</p></div>
<p>&#160;</p>
<p>But if we are going to use this control with named part then we will get an error message. Let’s add the user control in our stack panel in similar way we used the custom control. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:39f503eb-b594-41d6-9bfb-7df37ed611ce" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyUserControl</span><span style="color:#0000ff;">&gt;</span><br />     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyUserControl.Template</span><span style="color:#0000ff;">&gt;</span><br />         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ControlTemplate</span><span style="color:#0000ff;">&gt;</span><br />             <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Grid</span><span style="color:#0000ff;">&gt;</span><br />                 <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Button</span><span style="color:#ff0000;"> x</span><span style="color:#0000ff;">:</span><span style="color:#ff0000;">Name</span><span style="color:#0000ff;">=&quot;PART_MyPart&quot;</span><span style="color:#ff0000;"> Width</span><span style="color:#0000ff;">=&quot;150&quot;</span><span style="color:#ff0000;"> Height</span><span style="color:#0000ff;">=&quot;35&quot;</span><span style="color:#ff0000;"> Content</span><span style="color:#0000ff;">=&quot;Named Part defined&quot;/&gt;</span><br />             <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Grid</span><span style="color:#0000ff;">&gt;</span><br />         <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ControlTemplate</span><span style="color:#0000ff;">&gt;</span><br />     <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyUserControl.Template</span><span style="color:#0000ff;">&gt;</span><br /> <span style="color:#a31515;"></span><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">local</span><span style="color:#0000ff;">:</span><span style="color:#a31515;">MyUserControl</span><span style="color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>But this time we will get the compilation error. </p>
<p><strong>error MC3093: Cannot set Name attribute value &#8216;PART_MyPart&#8217; on element &#8216;Button&#8217;. &#8216;Button&#8217; is under the scope of element &#8216;MyUserControl&#8217;, which already had a name registered when it was defined in another scope. Line 29 Position 33.</strong></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/'>Controls</a>, <a href='http://zamjad.wordpress.com/category/wpf/template-wpf/controltemplate-template-wpf-wpf/'>ControlTemplate</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/customcontrol/'>CustomControl</a>, <a href='http://zamjad.wordpress.com/category/wpf/template-wpf/'>Template</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/usercontrol/'>UserControl</a>, <a href='http://zamjad.wordpress.com/category/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/category/xaml/'>XAML</a> Tagged: <a href='http://zamjad.wordpress.com/tag/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/tag/control/'>Control</a>, <a href='http://zamjad.wordpress.com/tag/controls/'>Controls</a>, <a href='http://zamjad.wordpress.com/tag/controltemplate/'>ControlTemplate</a>, <a href='http://zamjad.wordpress.com/tag/custom-control/'>Custom Control</a>, <a href='http://zamjad.wordpress.com/tag/customcontrol/'>CustomControl</a>, <a href='http://zamjad.wordpress.com/tag/onapplytemplate/'>OnApplyTemplate</a>, <a href='http://zamjad.wordpress.com/tag/template/'>Template</a>, <a href='http://zamjad.wordpress.com/tag/templatepartattribute/'>TemplatePartAttribute</a>, <a href='http://zamjad.wordpress.com/tag/user-control/'>User Control</a>, <a href='http://zamjad.wordpress.com/tag/usercontrol/'>UserControl</a>, <a href='http://zamjad.wordpress.com/tag/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/tag/xaml/'>XAML</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1964/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1964&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/11/28/named-part-idiom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/namedpartdemo_thumb.jpg" medium="image">
			<media:title type="html">NamedPartDemo</media:title>
		</media:content>
	</item>
		<item>
		<title>WinRT internals using C++. Part 3</title>
		<link>http://zamjad.wordpress.com/2012/11/18/winrt-internals-using-c-part-3/</link>
		<comments>http://zamjad.wordpress.com/2012/11/18/winrt-internals-using-c-part-3/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 19:20:09 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[Interface]]></category>
		<category><![CDATA[IWeakReferenceSource]]></category>
		<category><![CDATA[Modern UI]]></category>
		<category><![CDATA[Visual CPP]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[__abi_IUnknown]]></category>
		<category><![CDATA[Metro UI]]></category>
		<category><![CDATA[reportAllClassLayout]]></category>
		<category><![CDATA[Visual C++]]></category>
		<category><![CDATA[__abi_FTMWeakRefData]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1959</guid>
		<description><![CDATA[We saw in the first part that there is a different object size when we are using ref keyword when creating class here. We can use one undocumented C++ command line switch “reportAllClassLayout” to see the class structure. We can type “/d1 reportAllClassLayout” at the “Additional Options” text box as shown in the screen shot. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1959&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We saw in the first part that there is a different object size when we are using ref keyword when creating class <a href="http://zamjad.wordpress.com/2012/11/09/winrt-internals-using-c-part-1/">here</a>. We can use one undocumented C++ command line switch “reportAllClassLayout” to see the class structure. We can type “<strong>/d1 reportAllClassLayout”</strong> at the “Additional Options” text box as shown in the screen shot. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_11.jpg"><img title="WinRT_Internal_11" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_11" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_11_thumb.jpg?w=504&#038;h=358" width="504" height="358" /></a></p>
<p>And let’s see what output is generated by this command line switch. </p>
<p><strong>class MyClassB&#160;&#160;&#160; size(24):     <br />&#160;&#160;&#160; +&#8212;      <br />&#160;&#160;&#160; | +&#8212; (base class __IMyClassBPublicNonVirtuals)      <br />&#160;&#160;&#160; | | +&#8212; (base class Object)      <br /> 0&#160;&#160;&#160; | | | {vfptr}      <br />&#160;&#160;&#160; | | +&#8212;      <br />&#160;&#160;&#160; | +&#8212;      <br />&#160;&#160;&#160; | +&#8212; (base class Object)      <br /> 4&#160;&#160;&#160; | | {vfptr}      <br />&#160;&#160;&#160; | +&#8212;      <br />&#160;&#160;&#160; | +&#8212; (base class IWeakReferenceSource)      <br />&#160;&#160;&#160; | | +&#8212; (base class __abi_IUnknown)      <br /> 8&#160;&#160;&#160; | | | {vfptr}      <br />&#160;&#160;&#160; | | +&#8212;      <br />&#160;&#160;&#160; | | +&#8212; (base class Object)      <br />12&#160;&#160;&#160; | | | {vfptr}      <br />&#160;&#160;&#160; | | +&#8212;      <br />&#160;&#160;&#160; | +&#8212;      <br />16&#160;&#160;&#160; | __abi_FTMWeakRefData __abi_reference_count      <br />&#160;&#160;&#160; +&#8212;      <br /></strong></p>
<p>&#160;</p>
<p>Let’s explore this output. The number at the left most shows the offset of the field. It means that the length of all the fields are 4 bytes except the last one which is 8 bytes as shown by this diagram. In addition to that we can even get the information about vtable just below of it. Here is the information about the vtable of this class. </p>
<p><strong>MyClassB::$vftable@__IMyClassBPublicNonVirtuals@:     <br />&#160;&#160;&#160; | &amp;MyClassB_meta      <br />&#160;&#160;&#160; |&#160; 0      <br /> 0&#160;&#160;&#160; | &amp;MyClassB::__abi_QueryInterface      <br /> 1&#160;&#160;&#160; | &amp;MyClassB::__abi_AddRef      <br /> 2&#160;&#160;&#160; | &amp;MyClassB::__abi_Release      <br /> 3&#160;&#160;&#160; | &amp;MyClassB::__abi_GetIids      <br /> 4&#160;&#160;&#160; | &amp;MyClassB::__abi_GetRuntimeClassName      <br /> 5&#160;&#160;&#160; | &amp;MyClassB::__abi_GetTrustLevel</strong></p>
<p><strong>MyClassB::$vftable@Object@:     <br />&#160;&#160;&#160; | -4      <br /> 0&#160;&#160;&#160; | &amp;thunk: this-=4; goto MyClassB::__abi_QueryInterface      <br /> 1&#160;&#160;&#160; | &amp;thunk: this-=4; goto MyClassB::__abi_AddRef      <br /> 2&#160;&#160;&#160; | &amp;thunk: this-=4; goto MyClassB::__abi_Release      <br /> 3&#160;&#160;&#160; | &amp;thunk: this-=4; goto MyClassB::__abi_GetIids      <br /> 4&#160;&#160;&#160; | &amp;thunk: this-=4; goto MyClassB::__abi_GetRuntimeClassName      <br /> 5&#160;&#160;&#160; | &amp;thunk: this-=4; goto MyClassB::__abi_GetTrustLevel</strong></p>
<p><strong>MyClassB::$vftable@__abi_IUnknown@:     <br />&#160;&#160;&#160; | -8      <br /> 0&#160;&#160;&#160; | &amp;thunk: this-=8; goto MyClassB::__abi_QueryInterface      <br /> 1&#160;&#160;&#160; | &amp;thunk: this-=8; goto MyClassB::__abi_AddRef      <br /> 2&#160;&#160;&#160; | &amp;thunk: this-=8; goto MyClassB::__abi_Release      <br /> 3&#160;&#160;&#160; | &amp;thunk: this-=8; goto MyClassB::__abi_Platform_Details_IWeakReferenceSource____abi_GetWeakReference      <br /> 4&#160;&#160;&#160; | &amp;thunk: this-=8; goto MyClassB::GetWeakReference</strong></p>
<p><strong>MyClassB::$vftable@Object@IWeakReferenceSource@:     <br />&#160;&#160;&#160; | -12      <br /> 0&#160;&#160;&#160; | &amp;thunk: this-=12; goto MyClassB::__abi_QueryInterface      <br /> 1&#160;&#160;&#160; | &amp;thunk: this-=12; goto MyClassB::__abi_AddRef      <br /> 2&#160;&#160;&#160; | &amp;thunk: this-=12; goto MyClassB::__abi_Release      <br /> 3&#160;&#160;&#160; | &amp;thunk: this-=12; goto MyClassB::__abi_GetIids      <br /> 4&#160;&#160;&#160; | &amp;thunk: this-=12; goto MyClassB::__abi_GetRuntimeClassName      <br /> 5&#160;&#160;&#160; | &amp;thunk: this-=12; goto MyClassB::__abi_GetTrustLevel</strong></p>
<p><strong>MyClassB::__abi_QueryInterface this adjustor: 0     <br />MyClassB::__abi_AddRef this adjustor: 0      <br />MyClassB::__abi_Release this adjustor: 0      <br />MyClassB::__abi_GetIids this adjustor: 0      <br />MyClassB::__abi_GetRuntimeClassName this adjustor: 0      <br />MyClassB::__abi_GetTrustLevel this adjustor: 0      <br />MyClassB::GetWeakReference this adjustor: 0      <br />MyClassB::__abi_Platform_Details_IWeakReferenceSource____abi_GetWeakReference this adjustor: 0      <br /></strong></p>
<p>&#160;</p>
<p>We can construct a following diagram with the help of vtable about the memory layout of the class. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_12.jpg"><img title="WinRT_Internal_12" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_12" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_12_thumb.jpg?w=388&#038;h=456" width="388" height="456" /></a></p>
<p>__abi_FTMWeakRefData is defined in vccorlib.h header file and it contains two pointers therefore it’s size is 8 bytes. Here is a class diagram of __abi_FTMWeakRefData. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_13.jpg"><img title="WinRT_Internal_13" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_13" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_13_thumb.jpg?w=503&#038;h=320" width="503" height="320" /></a></p>
<p>Here is a code of __abi_FTMWeakRefData from vccorlib.h</p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6906f315-dfff-4245-8ba5-bebcfd9adf1b" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#008000;">// A class that represents a volatile refcount, that gets initialized to 0.</span><br /> <span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">__abi_FTMWeakRefData</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><span style="background:#ffffff;color:#000000;">* __weakRefSource;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><span style="background:#ffffff;color:#000000;">* __pUnkMarshal;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;">:</span><br />     <span style="background:#ffffff;color:#000000;">__abi_FTMWeakRefData(::Platform::</span><span style="background:#ffffff;color:#2b91af;">Object</span><span style="background:#ffffff;color:#000000;">^ </span><span style="background:#ffffff;color:#808080;">__targetArg</span><span style="background:#ffffff;color:#000000;">)</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">auto</span><span style="background:#ffffff;color:#000000;"> __weakRef = </span><span style="background:#ffffff;color:#0000ff;">ref</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> ::Platform::Details::</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceSource</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#808080;">__targetArg</span><span style="background:#ffffff;color:#000000;">);</span><br />         <span style="background:#ffffff;color:#000000;">__weakRefSource = </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><span style="background:#ffffff;color:#000000;">*&gt;(__weakRef);</span><br />         <span style="background:#ffffff;color:#000000;">*</span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><span style="background:#ffffff;color:#000000;">**&gt;(&amp;__weakRef) = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">#if</span><span style="background:#ffffff;color:#000000;"> !</span><span style="background:#ffffff;color:#0000ff;">defined</span><span style="background:#ffffff;color:#000000;">(VCWINRT_DLL)</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> __hr = ::__Platform_CoCreateFreeThreadedMarshaler(</span><span style="background:#ffffff;color:#808080;">__targetArg</span><span style="background:#ffffff;color:#000000;">,  </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt; ::Platform::</span><span style="background:#ffffff;color:#2b91af;">Object</span><span style="background:#ffffff;color:#000000;">^*&gt;(&amp;__pUnkMarshal));</span><br /> <span style="background:#ffffff;color:#0000ff;">#else</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> __hr = ::CoCreateFreeThreadedMarshaler(</span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;IUnknown*&gt;(__targetArg),  </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;IUnknown**&gt;(&amp;__pUnkMarshal));</span><br /> <span style="background:#ffffff;color:#0000ff;">#endif</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__hr != 0)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;">__weakRefSource-&gt;__abi_Release();</span><br />             <span style="background:#ffffff;color:#000000;">__weakRefSource = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span><br />         <span style="background:#ffffff;color:#000000;">}</span><br />         <span style="background:#ffffff;color:#000000;">__abi_ThrowIfFailed(__hr);</span><br />         <span style="background:#ffffff;color:#000000;"></span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__abi_module != </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;">__abi_module-&gt;__abi_IncrementObjectCount();</span><br />         <span style="background:#ffffff;color:#000000;">}</span><br />     <span style="background:#ffffff;color:#000000;">}</span></p>
<p>     <span style="background:#ffffff;color:#000000;">__abi_FTMWeakRefData(::Platform::</span><span style="background:#ffffff;color:#2b91af;">Object</span><span style="background:#ffffff;color:#000000;">^ </span><span style="background:#ffffff;color:#808080;">__targetArg</span><span style="background:#ffffff;color:#000000;">, ::Platform::</span><span style="background:#ffffff;color:#2b91af;">CallbackContext</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#808080;">__contextArg</span><span style="background:#ffffff;color:#000000;">)</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">auto</span><span style="background:#ffffff;color:#000000;"> __weakRef = </span><span style="background:#ffffff;color:#0000ff;">ref</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">new</span><span style="background:#ffffff;color:#000000;"> ::Platform::Details::</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceSource</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#808080;">__targetArg</span><span style="background:#ffffff;color:#000000;">);</span><br />         <span style="background:#ffffff;color:#000000;">__weakRefSource = </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><span style="background:#ffffff;color:#000000;">*&gt;(__weakRef);</span><br />         <span style="background:#ffffff;color:#000000;">*</span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><span style="background:#ffffff;color:#000000;">**&gt;(&amp;__weakRef) = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (</span><span style="background:#ffffff;color:#808080;">__contextArg</span><span style="background:#ffffff;color:#000000;"> == ::Platform::</span><span style="background:#ffffff;color:#2b91af;">CallbackContext</span><span style="background:#ffffff;color:#000000;">::</span><span style="background:#ffffff;color:#2f4f4f;">Any</span><span style="background:#ffffff;color:#000000;">)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#0000ff;">#if</span><span style="background:#ffffff;color:#000000;"> !</span><span style="background:#ffffff;color:#0000ff;">defined</span><span style="background:#ffffff;color:#000000;">(VCWINRT_DLL)</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> __hr = ::__Platform_CoCreateFreeThreadedMarshaler(</span><span style="background:#ffffff;color:#808080;">__targetArg</span><span style="background:#ffffff;color:#000000;">,  </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt; ::Platform::</span><span style="background:#ffffff;color:#2b91af;">Object</span><span style="background:#ffffff;color:#000000;">^*&gt;(&amp;__pUnkMarshal));</span><br /> <span style="background:#ffffff;color:#0000ff;">#else</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> __hr = ::CoCreateFreeThreadedMarshaler(</span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;IUnknown*&gt;(__targetArg),  </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt;IUnknown**&gt;(&amp;__pUnkMarshal));</span><br /> <span style="background:#ffffff;color:#0000ff;">#endif</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__hr != 0)</span><br />             <span style="background:#ffffff;color:#000000;">{</span><br />                 <span style="background:#ffffff;color:#000000;">__weakRefSource-&gt;__abi_Release();</span><br />                 <span style="background:#ffffff;color:#000000;">__weakRefSource = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span><br />             <span style="background:#ffffff;color:#000000;">}</span><br />             <span style="background:#ffffff;color:#000000;">__abi_ThrowIfFailed(__hr);</span><br />         <span style="background:#ffffff;color:#000000;">}</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__abi_module != </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;">__abi_module-&gt;__abi_IncrementObjectCount();</span><br />         <span style="background:#ffffff;color:#000000;">}</span><br />     <span style="background:#ffffff;color:#000000;">}</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">// called for a partially created ref class i.e. exception thrown from ctor</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;"> __abi_dtor()</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (!__weakRefSource)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;">;</span><br />         <span style="background:#ffffff;color:#000000;">}</span></p>
<p>         <span style="background:#ffffff;color:#000000;">__weakRefSource-&gt;__abi_Release();</span><br />         <span style="background:#ffffff;color:#000000;">__weakRefSource = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__pUnkMarshal)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;">__pUnkMarshal-&gt;__abi_Release();</span><br />             <span style="background:#ffffff;color:#000000;">__pUnkMarshal = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span><br />         <span style="background:#ffffff;color:#000000;">}</span><br />         <span style="background:#ffffff;color:#000000;"></span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__abi_module != </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;">__abi_module-&gt;__abi_DecrementObjectCount();</span><br />         <span style="background:#ffffff;color:#000000;">}</span><br />     <span style="background:#ffffff;color:#000000;">}</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">inline</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">unsigned</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">__stdcall</span><span style="background:#ffffff;color:#000000;"> Increment() </span><span style="background:#ffffff;color:#0000ff;">volatile</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (!__weakRefSource)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">static_cast</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">unsigned</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;">&gt;(-1); </span><span style="background:#ffffff;color:#008000;">// Called during destruction</span><br />         <span style="background:#ffffff;color:#000000;">}</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt; ::Platform::Details::</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceSource</span><span style="background:#ffffff;color:#000000;">^&gt;(__weakRefSource)-&gt;IncrementStrongReference();</span><br />     <span style="background:#ffffff;color:#000000;">}</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">inline</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">unsigned</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">__stdcall</span><span style="background:#ffffff;color:#000000;"> Decrement() </span><span style="background:#ffffff;color:#0000ff;">volatile</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (!__weakRefSource)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">static_cast</span><span style="background:#ffffff;color:#000000;">&lt;</span><span style="background:#ffffff;color:#0000ff;">unsigned</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;">&gt;(-1); </span><span style="background:#ffffff;color:#008000;">// Called during destruction</span><br />         <span style="background:#ffffff;color:#000000;">}</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">unsigned</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> __refCount = </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt; ::Platform::Details::</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceSource</span><span style="background:#ffffff;color:#000000;">^&gt;(__weakRefSource)-&gt;DecrementStrongReference();</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__refCount == 0)</span><br />         <span style="background:#ffffff;color:#000000;">{</span><br />             <span style="background:#ffffff;color:#000000;">__weakRefSource-&gt;__abi_Release();</span><br />             <span style="background:#ffffff;color:#000000;">__weakRefSource = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p>             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__pUnkMarshal)</span><br />             <span style="background:#ffffff;color:#000000;">{</span><br />                 <span style="background:#ffffff;color:#000000;">__pUnkMarshal-&gt;__abi_Release();</span><br />                 <span style="background:#ffffff;color:#000000;">__pUnkMarshal = </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">;</span><br />             <span style="background:#ffffff;color:#000000;">}</span></p>
<p>             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">// When destructing objects at the end of the program, we might be freeing</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">// objects across dlls, and the dll this object is in might have already freed its module object.</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">if</span><span style="background:#ffffff;color:#000000;"> (__abi_module != </span><span style="background:#ffffff;color:#0000ff;">nullptr</span><span style="background:#ffffff;color:#000000;">) </span><br />             <span style="background:#ffffff;color:#000000;">{</span><br />                 <span style="background:#ffffff;color:#000000;">__abi_module-&gt;__abi_DecrementObjectCount();</span><br />             <span style="background:#ffffff;color:#000000;">}</span><br />         <span style="background:#ffffff;color:#000000;">}</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> __refCount;</span><br />     <span style="background:#ffffff;color:#000000;">}</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">inline</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><span style="background:#ffffff;color:#000000;">* GetFreeThreadedMarshaler()</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> __pUnkMarshal;</span><br />     <span style="background:#ffffff;color:#000000;">}</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">inline</span><span style="background:#ffffff;color:#000000;"> ::Platform::Details::</span><span style="background:#ffffff;color:#2b91af;">IWeakReference</span><span style="background:#ffffff;color:#000000;">^ GetWeakReference()</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt; ::Platform::Details::</span><span style="background:#ffffff;color:#2b91af;">IWeakReference</span><span style="background:#ffffff;color:#000000;">^&gt;(__weakRefSource);</span><br />     <span style="background:#ffffff;color:#000000;">}</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">inline</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">__stdcall</span><span style="background:#ffffff;color:#000000;"> Get() </span><span style="background:#ffffff;color:#0000ff;">volatile</span><br />     <span style="background:#ffffff;color:#000000;">{</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">return</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">reinterpret_cast</span><span style="background:#ffffff;color:#000000;">&lt; ::Platform::Details::</span><span style="background:#ffffff;color:#2b91af;">WeakReferenceSource</span><span style="background:#ffffff;color:#000000;">^&gt;(__weakRefSource)-&gt;GetRefcount();</span><br />     <span style="background:#ffffff;color:#000000;">}</span><br /> <span style="background:#ffffff;color:#000000;">};</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here __abi_IUnknown is similar to IUnknown interface and the reason to define one more interface is defined in comment in vccorelib.h file where define this interface. Here is a code from the vccorlib.h header file. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:44a15e1a-10b4-4ae2-a86a-741e3d1fbb1e" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#008000;">//</span><br /> <span style="background:#ffffff;color:#008000;">//// Don&#039;t want to define the real IUnknown from unknown.h here. That would means if the user has</span><br /> <span style="background:#ffffff;color:#008000;">//// any broken code that uses it, compile errors will take the form of e.g.:</span><br /> <span style="background:#ffffff;color:#008000;">////     predefined C++ WinRT types (compiler internal)(41) : see declaration of &#039;IUnknown::QueryInterface&#039;</span><br /> <span style="background:#ffffff;color:#008000;">//// This is not helpful. If they use IUnknown, we still need to point them to the actual unknown.h so</span><br /> <span style="background:#ffffff;color:#008000;">//// that they can see the original definition.</span><br /> <span style="background:#ffffff;color:#008000;">////</span><br /> <span style="background:#ffffff;color:#008000;">//// For WinRT, we&#039;ll instead have a parallel COM interface hierarchy for basic interfaces starting with _.</span><br /> <span style="background:#ffffff;color:#008000;">//// The type mismatch is not an issue. COM passes types through GUID / void* combos &#8211; the original type</span><br /> <span style="background:#ffffff;color:#008000;">//// doesn&#039;t come into play unless the user static_casts an implementation type to one of these, but</span><br /> <span style="background:#ffffff;color:#008000;">//// the WinRT implementation types are hidden.</span><br /> <span style="background:#ffffff;color:#0000ff;">__interface</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">__declspec</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#0000ff;">uuid</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#a31515;">&quot;00000000-0000-0000-C000-000000000046&quot;</span><span style="background:#ffffff;color:#000000;">)) </span><span style="background:#ffffff;color:#2b91af;">__abi_IUnknown</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;">:</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">virtual</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">__stdcall</span><span style="background:#ffffff;color:#000000;"> __abi_QueryInterface(::Platform::</span><span style="background:#ffffff;color:#2b91af;">Guid</span><span style="background:#ffffff;color:#000000;">&amp;, </span><span style="background:#ffffff;color:#0000ff;">void</span><span style="background:#ffffff;color:#000000;">**) = 0;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">virtual</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">unsigned</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">__stdcall</span><span style="background:#ffffff;color:#000000;"> __abi_AddRef() = 0;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">virtual</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">unsigned</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">long</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">__stdcall</span><span style="background:#ffffff;color:#000000;"> __abi_Release() = 0;</span><br /> <span style="background:#ffffff;color:#000000;">};</span></div>
</p></div>
</p></div>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/interface/'>Interface</a>, <a href='http://zamjad.wordpress.com/category/interface/iweakreferencesource/'>IWeakReferenceSource</a>, <a href='http://zamjad.wordpress.com/category/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/category/visual-cpp/'>Visual CPP</a>, <a href='http://zamjad.wordpress.com/category/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/category/interface/__abi_iunknown/'>__abi_IUnknown</a> Tagged: <a href='http://zamjad.wordpress.com/tag/iweakreferencesource/'>IWeakReferenceSource</a>, <a href='http://zamjad.wordpress.com/tag/metro-ui/'>Metro UI</a>, <a href='http://zamjad.wordpress.com/tag/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/tag/reportallclasslayout/'>reportAllClassLayout</a>, <a href='http://zamjad.wordpress.com/tag/visual-c/'>Visual C++</a>, <a href='http://zamjad.wordpress.com/tag/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/tag/__abi_ftmweakrefdata/'>__abi_FTMWeakRefData</a>, <a href='http://zamjad.wordpress.com/tag/__abi_iunknown/'>__abi_IUnknown</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1959/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1959/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1959&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/11/18/winrt-internals-using-c-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_11_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_11</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_12_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_12</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_13_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_13</media:title>
		</media:content>
	</item>
		<item>
		<title>WinRT internals using C++. Part 2</title>
		<link>http://zamjad.wordpress.com/2012/11/11/winrt-internals-using-c-part-2/</link>
		<comments>http://zamjad.wordpress.com/2012/11/11/winrt-internals-using-c-part-2/#comments</comments>
		<pubDate>Sun, 11 Nov 2012 18:26:48 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[Modern UI]]></category>
		<category><![CDATA[Visual CPP]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[ildasm]]></category>
		<category><![CDATA[Metro UI]]></category>
		<category><![CDATA[Visual C++]]></category>
		<category><![CDATA[winmd]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1951</guid>
		<description><![CDATA[Let’s further explore the WinRT and continue the discussion we started here. We created a simple program to see the ref class and simple class to compile in .Net. Let’s try to compile the same program in WinRT. Select Windows Store App Support from the project setting. And type /ZW in the additional options text [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1951&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Let’s further explore the WinRT and continue the discussion we started <a href="http://zamjad.wordpress.com/2012/11/09/winrt-internals-using-c-part-1/">here</a>. We created a simple program to see the ref class and simple class to compile in .Net. Let’s try to compile the same program in WinRT. Select Windows Store App Support from the project setting. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_05.jpg"><img title="WinRT_Internal_05" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_05" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_05_thumb.jpg?w=504&#038;h=358" width="504" height="358" /></a></p>
<p>And type /ZW in the additional options text box when select the command line from C/C++</p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_06.jpg"><img title="WinRT_Internal_06" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_06" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_06_thumb.jpg?w=504&#038;h=358" width="504" height="358" /></a></p>
<p>And type the following program. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cc0eb0b3-ffb5-454b-b89b-5d355806b540" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"> <span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> A</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">};</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">ref</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> B </span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">};</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> main()</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> s1 = </span><span style="background:#ffffff;color:#0000ff;">sizeof</span><span style="background:#ffffff;color:#000000;">(A);</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> s2 = </span><span style="background:#ffffff;color:#0000ff;">sizeof</span><span style="background:#ffffff;color:#000000;">(B);</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Now when we compile it we will get one compilation error. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_07.jpg"><img title="WinRT_Internal_07" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_07" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_07_thumb.jpg?w=504&#038;h=142" width="504" height="142" /></a></p>
<p>This compilation error gives me some extra information i.e. name of one assembly required by the C++ program named platform.winmd. I searched this file on my computer and found it on multiple locations. </p>
<p><strong>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcpackages</strong></p>
<p><strong>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\Microsoft.VCLibs\11.0\References\CommonConfiguration\neutral</strong></p>
<p>Let’s try our old tool dumbin on this file. Type this at command prompt</p>
<p><strong>dumpbin platform.winmd</strong></p>
<p>Here is its output</p>
<p><strong>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcpackages&gt;dumpbin platfo     <br />rm.winmd      <br />Microsoft (R) COFF/PE Dumper Version 10.00.40219.01      <br />Copyright (C) Microsoft Corporation.&#160; All rights reserved.</strong></p>
<p><strong>Dump of file platform.winmd</strong></p>
<p><strong>File Type: DLL</strong></p>
<p><strong>&#160; Summary</strong></p>
<p><strong>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2000 .reloc     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2000 .rsrc      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 6000 .text      <br /></strong></p>
<p>&#160;</p>
<p>It means that winmd file is simple Windows DLL as shown by the output of the program. But we couldn’t get any extra information from it. Let’s try to open the same file from ildasm to see if we can get some extra information. Idasm opens this file successfully and here is what we will get from ildasm. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_08.jpg"><img title="WinRT_Internal_08" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_08" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_08_thumb.jpg?w=404&#038;h=604" width="404" height="604" /></a></p>
<p>This shows that winmd file contains the meta data that is compatible with .Net meta data because we are able to open it in .Net tool (ildasm). Let’s explore it little bit more and see what we can find under the Platform namespace. In our previous post we came across Object class in Platform namespace, lets see the meta data of that class using ildasm. </p>
<p>Here is the meta data of Object class. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_09.jpg"><img title="WinRT_Internal_09" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_09" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_09_thumb.jpg?w=404&#038;h=604" width="404" height="604" /></a></p>
<p>But if we open any method then we couldn’t see any code because there is only meta data in winmd file no code. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_10.jpg"><img title="WinRT_Internal_10" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_10" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_10_thumb.jpg?w=504&#038;h=316" width="504" height="316" /></a></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/category/visual-cpp/'>Visual CPP</a>, <a href='http://zamjad.wordpress.com/category/winrt/'>WinRT</a> Tagged: <a href='http://zamjad.wordpress.com/tag/ildasm/'>ildasm</a>, <a href='http://zamjad.wordpress.com/tag/metro-ui/'>Metro UI</a>, <a href='http://zamjad.wordpress.com/tag/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/tag/visual-c/'>Visual C++</a>, <a href='http://zamjad.wordpress.com/tag/winmd/'>winmd</a>, <a href='http://zamjad.wordpress.com/tag/winrt/'>WinRT</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1951/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1951&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/11/11/winrt-internals-using-c-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_05_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_05</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_06_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_06</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_07_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_07</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_08_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_08</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_09_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_09</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_10_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_10</media:title>
		</media:content>
	</item>
		<item>
		<title>WinRT internals using C++. Part 1</title>
		<link>http://zamjad.wordpress.com/2012/11/09/winrt-internals-using-c-part-1/</link>
		<comments>http://zamjad.wordpress.com/2012/11/09/winrt-internals-using-c-part-1/#comments</comments>
		<pubDate>Fri, 09 Nov 2012 06:20:29 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[IInspectable]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[IUnknown]]></category>
		<category><![CDATA[IWeakReferenceSource]]></category>
		<category><![CDATA[Modern UI]]></category>
		<category><![CDATA[Visual CPP]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[Metro UI]]></category>
		<category><![CDATA[Visual C++]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1937</guid>
		<description><![CDATA[Today I decided to play with WinRT using C++. I created a simple Blank Windows Store program and start looking at the source code generated by the Visual Studio. I discover that Visual Studio generate MainPage and App class as a ref class. Once I came across the ref classes when working on .Net using [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1937&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Today I decided to play with WinRT using C++. I created a simple Blank Windows Store program and start looking at the source code generated by the Visual Studio. I discover that Visual Studio generate MainPage and App class as a ref class. Once I came across the ref classes when working on .Net using Managed C++ <a href="http://zamjad.wordpress.com/2009/08/04/wpf-programming-with-vc/">here</a> is one example of it. </p>
<p>In my first experiment, I created two classes, one with the ref keyword and one without it. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d0bc58d7-049d-4d40-8c14-4289807b4124" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">MyClassA</span><span style="background:#ffffff;color:#000000;"> </span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">};</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">ref</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">MyClassB</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">}</span><span style="background:#ffffff;color:#000000;">;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Then I used the sizeof operator to see how much memory is allocated for both of them. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6e11fae9-4d98-4b9b-bd9c-eb25f5f625f0" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;">    <span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> s1 = </span><span style="background:#ffffff;color:#0000ff;">sizeof</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#2b91af;">MyClassA</span><span style="background:#ffffff;color:#000000;">);</span></p>
<p> <span style="background:#ffffff;color:#000000;">    </span><span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> s2 = </span><span style="background:#ffffff;color:#0000ff;">sizeof</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#2b91af;">MyClassB</span><span style="background:#ffffff;color:#000000;">);</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>As expected the size of first one is 1 byte, but the size of second class is 24 bytes. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_01.jpg"><img title="WinRT_Internal_01" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="WinRT_Internal_01" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_01_thumb.jpg?w=500&#038;h=166" width="500" height="166" /></a></p>
<p>It clearly shows that the second object must contain some extra information. I wanted to confirm the same thing with .Net, therefore I created one empty project in Visual Studio and set the property to use the common language runtime support i.e. /clr switch. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_02.jpg"><img title="WinRT_Internal_02" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="WinRT_Internal_02" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_02_thumb.jpg?w=500&#038;h=355" width="500" height="355" /></a></p>
<p>And created exactly the same two classes. Here is our code. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b9845dff-8b0a-4f64-9379-31cc6daf45b2" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"> <span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">A</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">}</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">ref</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">B</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br /> <span style="background:#ffffff;color:#000000;">}</span><span style="background:#ffffff;color:#000000;">;</span></p>
<p> <span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> main()</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> s1 = </span><span style="background:#ffffff;color:#0000ff;">sizeof</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#2b91af;">A</span><span style="background:#ffffff;color:#000000;">);</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> s2 = </span><span style="background:#ffffff;color:#0000ff;">sizeof</span><span style="background:#ffffff;color:#000000;">(</span><span style="background:#ffffff;color:#2b91af;">B</span><span style="background:#ffffff;color:#000000;">);</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>But I am not even able to compile the project. I am getting the following error message. </p>
<p>Error&#160;&#160;&#160; 1&#160;&#160;&#160; error C2847: cannot apply sizeof to managed type &#8216;B&#8217;&#160;&#160;&#160; C:\zamjad\Projects\WinRT\CppProject1\CppProject1\Source.cpp&#160;&#160;&#160; 14&#160;&#160;&#160; 1&#160;&#160;&#160; CppProject1   </p>
<p>It means that ref class in .Net and WinRT are two different things. Let’s go back to our WinRT program and play with it little bit more. Let’s generate the listing file of the source code. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_03.jpg"><img title="WinRT_Internal_03" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="WinRT_Internal_03" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_03_thumb.jpg?w=500&#038;h=355" width="500" height="355" /></a></p>
<p>And then search for MyClassB to see what is special about this class. We will see the following entries in the file. </p>
<p><strong>PUBLIC&#160;&#160;&#160; ??0MyClassB@@Q$AAA@XZ&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ; MyClassB::MyClassB     <br />PUBLIC&#160;&#160;&#160; ?__abi_QueryInterface@?QObject@Platform@@MyClassB@@U$AAGJAAVGuid@2@PAPAX@Z ; MyClassB::[Platform::Object]::__abi_QueryInterface      <br />PUBLIC&#160;&#160;&#160; ?__abi_AddRef@?QObject@Platform@@MyClassB@@U$AAGKXZ ; MyClassB::[Platform::Object]::__abi_AddRef      <br />PUBLIC&#160;&#160;&#160; ?__abi_Release@?QObject@Platform@@MyClassB@@U$AAGKXZ ; MyClassB::[Platform::Object]::__abi_Release      <br />PUBLIC&#160;&#160;&#160; ?__abi_GetIids@?QObject@Platform@@MyClassB@@U$AAGJPAKPAPAVGuid@2@@Z ; MyClassB::[Platform::Object]::__abi_GetIids      <br />PUBLIC&#160;&#160;&#160; ?__abi_GetRuntimeClassName@?QObject@Platform@@MyClassB@@U$AAGJPAPAUHSTRING__@@@Z ; MyClassB::[Platform::Object]::__abi_GetRuntimeClassName      <br />PUBLIC&#160;&#160;&#160; ?__abi_GetTrustLevel@?QObject@Platform@@MyClassB@@U$AAGJPAW4__abi_TrustLevel@@@Z ; MyClassB::[Platform::Object]::__abi_GetTrustLevel      <br />PUBLIC&#160;&#160;&#160; ?GetWeakReference@?QIWeakReferenceSource@Details@Platform@@MyClassB@@U$AAAP$AAUIWeakReference@23@XZ ; MyClassB::[Platform::Details::IWeakReferenceSource]::GetWeakReference      <br />PUBLIC&#160;&#160;&#160; ?__abi_Platform_Details_IWeakReferenceSource____abi_GetWeakReference@?QIWeakReferenceSource@Details@Platform@@MyClassB@@U$AAGJPAP$AAUIWeakReference@23@@Z ; MyClassB::[Platform::Details::IWeakReferenceSource]::__abi_Platform_Details_IWeakReferenceSource____abi_GetWeakReference      <br /></strong></p>
<p>&#160;</p>
<p>We can get some extra information with the help of this listing file. It shows the class named Object in Platform namespace and few familiar methods. First take a look at the size of the Object class. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c4afb278-a598-48ff-ba4c-b9495ca15629" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">int</span><span style="background:#ffffff;color:#000000;"> s0 = </span><span style="background:#ffffff;color:#0000ff;">sizeof</span><span style="background:#ffffff;color:#000000;">(Platform::</span><span style="background:#ffffff;color:#2b91af;">Object</span><span style="background:#ffffff;color:#000000;">);</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>And its size is 4 bytes. Just like any class that implement one interface or has at least one virtual function. These methods are from three interfaces, IUnknown, IInspectable and IWeakReferenceSource. </p>
<p>It means that when we create ref class in WinRT, it is actually implanting these three interfaces. Here is class diagram of these interfaces. </p>
<p>&#160;</p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrt_internal_04.jpg"><img title="WinRT_Internal_04" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRT_Internal_04" src="http://zamjad.files.wordpress.com/2012/11/winrt_internal_04_thumb.jpg?w=475&#038;h=414" width="475" height="414" /></a></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/interface/iinspectable/'>IInspectable</a>, <a href='http://zamjad.wordpress.com/category/interface/'>Interface</a>, <a href='http://zamjad.wordpress.com/category/interface/iunknown/'>IUnknown</a>, <a href='http://zamjad.wordpress.com/category/interface/iweakreferencesource/'>IWeakReferenceSource</a>, <a href='http://zamjad.wordpress.com/category/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/category/visual-cpp/'>Visual CPP</a>, <a href='http://zamjad.wordpress.com/category/winrt/'>WinRT</a> Tagged: <a href='http://zamjad.wordpress.com/tag/iinspectable/'>IInspectable</a>, <a href='http://zamjad.wordpress.com/tag/iunknown/'>IUnknown</a>, <a href='http://zamjad.wordpress.com/tag/iweakreferencesource/'>IWeakReferenceSource</a>, <a href='http://zamjad.wordpress.com/tag/metro-ui/'>Metro UI</a>, <a href='http://zamjad.wordpress.com/tag/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/tag/visual-c/'>Visual C++</a>, <a href='http://zamjad.wordpress.com/tag/winrt/'>WinRT</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1937/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1937&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/11/09/winrt-internals-using-c-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_01_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_01</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_02_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_02</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_03_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_03</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrt_internal_04_thumb.jpg" medium="image">
			<media:title type="html">WinRT_Internal_04</media:title>
		</media:content>
	</item>
		<item>
		<title>HorizontalContentAlignment in WPF and WinRT</title>
		<link>http://zamjad.wordpress.com/2012/11/01/horizontalcontentalignment-in-wpf-and-winrt/</link>
		<comments>http://zamjad.wordpress.com/2012/11/01/horizontalcontentalignment-in-wpf-and-winrt/#comments</comments>
		<pubDate>Fri, 02 Nov 2012 05:34:52 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ListView]]></category>
		<category><![CDATA[Modern UI]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[HorizontalAlignment]]></category>
		<category><![CDATA[HorizontalContentAlignment]]></category>
		<category><![CDATA[ItemContainerStyle]]></category>
		<category><![CDATA[Metro UI]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1927</guid>
		<description><![CDATA[When saw several usage of HorizontalContentAlignment property when we want to display more than one data in list box or combo box in WPF. Let’s first review this in WPF before studying in WinRT. HorizontalContentAlignment is an enum type of HorizontalAlignment with four possible values, as shown by this class diagram. Let’s take a look [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1927&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>When saw several usage of HorizontalContentAlignment property when we want to display more than one data in list box or combo box in WPF. Let’s first review this in WPF before studying in WinRT. HorizontalContentAlignment is an enum type of HorizontalAlignment with four possible values, as shown by this class diagram. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/horizontalalignment.jpg"><img title="HorizontalAlignment" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="HorizontalAlignment" src="http://zamjad.files.wordpress.com/2012/11/horizontalalignment_thumb.jpg?w=191&#038;h=160" width="191" height="160" /></a></p>
<p>Let’s take a look at this usage in ListBox in WPF. Let’s make a simple state class and use it. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c49b76a5-624c-4ff1-8f8b-12c353fa4270" class="wlWriterEditableSmartContent" style="float:none;margin-left:auto;display:block;width:496px;margin-right:auto;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">class</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#2b91af;">State</span><br /> <span style="background:#ffffff;color:#000000;">{</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> Name</span><br />     <span style="background:#ffffff;color:#000000;">{ </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">public</span><span style="background:#ffffff;color:#000000;"> </span><span style="background:#ffffff;color:#0000ff;">string</span><span style="background:#ffffff;color:#000000;"> Abbrivation</span><br />     <span style="background:#ffffff;color:#000000;">{ </span><span style="background:#ffffff;color:#0000ff;">get</span><span style="background:#ffffff;color:#000000;">; </span><span style="background:#ffffff;color:#0000ff;">set</span><span style="background:#ffffff;color:#000000;">; }</span><br /> <span style="background:#ffffff;color:#000000;">}</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Let’s define the data template for ListBox to user HorizontalContentAlignment property. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:616e0955-a625-4a31-8fb0-b3626c3c8ef1" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListBox</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;5&quot;</span><span style="background:#ffffff;color:#ff0000;"> ItemsSource</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span><span style="background:#ffffff;color:#ff0000;"> HorizontalContentAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListBox.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#ff0000;"> BorderBrush</span><span style="background:#ffffff;color:#0000ff;">=&quot;Navy&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;3&quot;</span><span style="background:#ffffff;color:#ff0000;"> BorderThickness</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> CornerRadius</span><span style="background:#ffffff;color:#0000ff;">=&quot;3&quot;&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Name}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Abbrivation}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListBox.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListBox</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is its output. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/wpfhorizontalcontentalignment.jpg"><img title="WPFHorizontalContentAlignment" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WPFHorizontalContentAlignment" src="http://zamjad.files.wordpress.com/2012/11/wpfhorizontalcontentalignment_thumb.jpg?w=504&#038;h=337" width="504" height="337" /></a></p>
<p>Now let’s do the same thing in WinRT and uses the same thing with ListView in WinRT. Here is our first attempt. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7737b856-0987-4af0-8ad0-ba6ce98a222b" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListView</span><span style="background:#ffffff;color:#ff0000;"> ItemsSource</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span><span style="background:#ffffff;color:#ff0000;"> HorizontalContentAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListView.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#ff0000;"> BorderBrush</span><span style="background:#ffffff;color:#0000ff;">=&quot;Navy&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;3&quot;</span><span style="background:#ffffff;color:#ff0000;"> BorderThickness</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> CornerRadius</span><span style="background:#ffffff;color:#0000ff;">=&quot;3&quot;&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Name}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Abbrivation}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListView.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListView</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is its output. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrthorizontalcontentalignment_01.jpg"><img title="WinRTHorizontalContentAlignment_01" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRTHorizontalContentAlignment_01" src="http://zamjad.files.wordpress.com/2012/11/winrthorizontalcontentalignment_01_thumb.jpg?w=504&#038;h=285" width="504" height="285" /></a></p>
<p>From the output of this program it is clear that the usage of HorizontalContentAlignment property is different in WPF and WinRT. In WinRT we have to define the HorizontalContentAlignment on ListViewItem control, not on ListView. Here is XAML code to define it. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8b9f0187-1eb4-439f-a766-c2e4b60defef" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Key</span><span style="background:#ffffff;color:#0000ff;">=&quot;style&quot;</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;ListViewItem&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;HorizontalContentAlignment&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot; /&gt;</span><span style="background:#ffffff;color:#000000;"></span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>We have to use ItemContainerStyle property to set this style. Here complete XAML code of the program. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2c385e84-bd53-4e37-a408-d37548007460" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">common</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#a31515;">LayoutAwarePage</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;pageRoot&quot;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Class</span><span style="background:#ffffff;color:#0000ff;">=&quot;ListView.BasicPage&quot;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> DataContext</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> DefaultViewModel</span><span style="background:#ffffff;color:#0000ff;">,</span><span style="background:#ffffff;color:#ff0000;"> RelativeSource</span><span style="background:#ffffff;color:#0000ff;">={</span><span style="background:#ffffff;color:#a31515;">RelativeSource</span><span style="background:#ffffff;color:#ff0000;"> Self}}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&#038;quot" rel="nofollow">http://schemas.microsoft.com/winfx/2006/xaml/presentation&#038;quot</a>;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">x</span><span style="background:#ffffff;color:#0000ff;">=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml&#038;quot" rel="nofollow">http://schemas.microsoft.com/winfx/2006/xaml&#038;quot</a>;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">local</span><span style="background:#ffffff;color:#0000ff;">=&quot;using:ListView&quot;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">common</span><span style="background:#ffffff;color:#0000ff;">=&quot;using:ListView.Common&quot;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">d</span><span style="background:#ffffff;color:#0000ff;">=&quot;<a href="http://schemas.microsoft.com/expression/blend/2008&#038;quot" rel="nofollow">http://schemas.microsoft.com/expression/blend/2008&#038;quot</a>;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> xmlns</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">mc</span><span style="background:#ffffff;color:#0000ff;">=&quot;<a href="http://schemas.openxmlformats.org/markup-compatibility/2006&#038;quot" rel="nofollow">http://schemas.openxmlformats.org/markup-compatibility/2006&#038;quot</a>;</span><br />    <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> mc</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Ignorable</span><span style="background:#ffffff;color:#0000ff;">=&quot;d&quot;&gt;</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.Resources</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">&lt;!&#8211; TODO: Delete this line if the key AppName is declared in App.xaml &#8211;&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#a31515;">String</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Key</span><span style="background:#ffffff;color:#0000ff;">=&quot;AppName&quot;&gt;</span><span style="background:#ffffff;color:#000000;">WinRT HorizontalContentAlignment</span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#a31515;">String</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Key</span><span style="background:#ffffff;color:#0000ff;">=&quot;style&quot;</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;ListViewItem&quot;&gt;</span><br />             <span style="background:#ffffff;color:#000000;">            </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;HorizontalContentAlignment&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot; /&gt;</span><span style="background:#ffffff;color:#000000;"></span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.Resources</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></p>
<p>     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">&lt;!&#8211;</span><br />         <span style="background:#ffffff;color:#008000;">This grid acts as a root panel for the page that defines two rows:</span><br />         <span style="background:#ffffff;color:#008000;">* Row 0 contains the back button and page title</span><br />         <span style="background:#ffffff;color:#008000;">* Row 1 contains the rest of the page layout</span><br />     <span style="background:#ffffff;color:#008000;">&#8211;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> LayoutRootStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid.RowDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">RowDefinition</span><span style="background:#ffffff;color:#ff0000;"> Height</span><span style="background:#ffffff;color:#0000ff;">=&quot;140&quot;/&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">RowDefinition</span><span style="background:#ffffff;color:#ff0000;"> Height</span><span style="background:#ffffff;color:#0000ff;">=&quot;*&quot;/&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid.RowDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">&lt;!&#8211; Back button and page title &#8211;&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#ff0000;"> Width</span><span style="background:#ffffff;color:#0000ff;">=&quot;Auto&quot;/&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#ff0000;"> Width</span><span style="background:#ffffff;color:#0000ff;">=&quot;*&quot;/&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;backButton&quot;</span><span style="background:#ffffff;color:#ff0000;"> Click</span><span style="background:#ffffff;color:#0000ff;">=&quot;GoBack&quot;</span><span style="background:#ffffff;color:#ff0000;"> IsEnabled</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Frame</span><span style="background:#ffffff;color:#0000ff;">.CanGoBack,</span><span style="background:#ffffff;color:#ff0000;"> ElementName</span><span style="background:#ffffff;color:#0000ff;">=pageRoot}&quot;</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> BackButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;pageTitle&quot;</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppName}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> PageHeaderTextStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></p>
<p>         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">FlipView</span><br />            <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;flipView&quot;</span><br />            <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> AutomationProperties.AutomationId</span><span style="background:#ffffff;color:#0000ff;">=&quot;MainFlipView&quot;</span><br />            <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> AutomationProperties.Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Main View&quot;</span><br />            <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> TabIndex</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><br />            <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#ff0000;"> Grid.Row</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><br />            <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;"> &gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListView</span><span style="background:#ffffff;color:#ff0000;"> ItemsSource</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span><span style="background:#ffffff;color:#ff0000;"> ItemContainerStyle</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> style}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListView.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#ff0000;"> BorderBrush</span><span style="background:#ffffff;color:#0000ff;">=&quot;Navy&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;3&quot;</span><span style="background:#ffffff;color:#ff0000;"> BorderThickness</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> CornerRadius</span><span style="background:#ffffff;color:#0000ff;">=&quot;3&quot;&gt;</span><br />                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Name}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Abbrivation}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Border</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListView.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListView</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">FlipView</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualStateManager.VisualStateGroups</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></p>
<p>             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">&lt;!&#8211; Visual states reflect the application&#039;s view state &#8211;&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;ApplicationViewStates&quot;&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;FullScreenLandscape&quot;/&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Filled&quot;/&gt;</span></p>
<p>                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">&lt;!&#8211; The entire page respects the narrower 100-pixel margin convention for portrait &#8211;&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;FullScreenPortrait&quot;&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;backButton&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Style&quot;&gt;</span><br />                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> PortraitBackButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></p>
<p>                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#008000;">&lt;!&#8211; The back button and title have different styles when snapped &#8211;&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Snapped&quot;&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;backButton&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Style&quot;&gt;</span><br />                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> SnappedBackButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;pageTitle&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Style&quot;&gt;</span><br />                             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> SnappedPageHeaderTextStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualStateManager.VisualStateGroups</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br /> <span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">common</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#a31515;">LayoutAwarePage</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is an output of this program. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/11/winrthorizontalcontentalignment_02.jpg"><img title="WinRTHorizontalContentAlignment_02" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRTHorizontalContentAlignment_02" src="http://zamjad.files.wordpress.com/2012/11/winrthorizontalcontentalignment_02_thumb.jpg?w=504&#038;h=285" width="504" height="285" /></a></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/category/c/'>C#</a>, <a href='http://zamjad.wordpress.com/category/winrt/listview-winrt/'>ListView</a>, <a href='http://zamjad.wordpress.com/category/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/category/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/category/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/category/xaml/'>XAML</a> Tagged: <a href='http://zamjad.wordpress.com/tag/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/tag/c/'>C#</a>, <a href='http://zamjad.wordpress.com/tag/horizontalalignment/'>HorizontalAlignment</a>, <a href='http://zamjad.wordpress.com/tag/horizontalcontentalignment/'>HorizontalContentAlignment</a>, <a href='http://zamjad.wordpress.com/tag/itemcontainerstyle/'>ItemContainerStyle</a>, <a href='http://zamjad.wordpress.com/tag/listview/'>ListView</a>, <a href='http://zamjad.wordpress.com/tag/metro-ui/'>Metro UI</a>, <a href='http://zamjad.wordpress.com/tag/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/tag/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/tag/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/tag/xaml/'>XAML</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1927/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1927/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1927&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/11/01/horizontalcontentalignment-in-wpf-and-winrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/horizontalalignment_thumb.jpg" medium="image">
			<media:title type="html">HorizontalAlignment</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/wpfhorizontalcontentalignment_thumb.jpg" medium="image">
			<media:title type="html">WPFHorizontalContentAlignment</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrthorizontalcontentalignment_01_thumb.jpg" medium="image">
			<media:title type="html">WinRTHorizontalContentAlignment_01</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/11/winrthorizontalcontentalignment_02_thumb.jpg" medium="image">
			<media:title type="html">WinRTHorizontalContentAlignment_02</media:title>
		</media:content>
	</item>
		<item>
		<title>ListView comparision in WPF and WinRT</title>
		<link>http://zamjad.wordpress.com/2012/10/30/listview-comparision-in-wpf-and-winrt/</link>
		<comments>http://zamjad.wordpress.com/2012/10/30/listview-comparision-in-wpf-and-winrt/#comments</comments>
		<pubDate>Tue, 30 Oct 2012 06:29:34 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Controls]]></category>
		<category><![CDATA[ListView]]></category>
		<category><![CDATA[Modern UI]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[Metro UI]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1917</guid>
		<description><![CDATA[If we are using C# and XAML to develop WPF and WinRT application, then at first attempt both looks very similar. But they are quite different, let’s take a look at the example of ListView. ListView control in WPF and WinRT are quite different. Let’s first explore the class hierarchy of both controls. Here is [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1917&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If we are using C# and XAML to develop WPF and WinRT application, then at first attempt both looks very similar. But they are quite different, let’s take a look at the example of ListView. ListView control in WPF and WinRT are quite different. Let’s first explore the class hierarchy of both controls. Here is a class hierarchy of WinRT ListView control. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/winrtlistview_class_hierarchy.jpg"><img title="WinRTListView_Class_Hierarchy" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRTListView_Class_Hierarchy" src="http://zamjad.files.wordpress.com/2012/10/winrtlistview_class_hierarchy_thumb.jpg?w=213&#038;h=1049" width="213" height="1049" /></a></p>
<p>And here is class hierarchy of ListView control in WPF. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/wpflistview_class_hierarchy.jpg"><img title="WPFListView_Class_Hierarchy" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WPFListView_Class_Hierarchy" src="http://zamjad.files.wordpress.com/2012/10/wpflistview_class_hierarchy_thumb.jpg?w=200&#038;h=1361" width="200" height="1361" /></a></p>
<p>We can immediately noticed few differences just by looking at both hierarchies. The first difference is DispatcherObject and Visual class missing from WinRT. The other important difference is in WPF ListView is inherited by ListBox class, however in WinRT it is inherited by ListViewBase class. Both class hierarchies implement different interfaces. </p>
<p>Now let’s take a look at class diagram of both classes. Here is a class diagram of WinRT ListView. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/winrtlistview.jpg"><img title="WinRTListView" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRTListView" src="http://zamjad.files.wordpress.com/2012/10/winrtlistview_thumb.jpg?w=167&#038;h=141" width="167" height="141" /></a></p>
<p>And here is a class diagram of WPF ListView. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/wpflistview.jpg"><img title="WPFListView" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WPFListView" src="http://zamjad.files.wordpress.com/2012/10/wpflistview_thumb.jpg?w=359&#038;h=339" width="359" height="339" /></a></p>
<p>From the class diagram it is very clear that in WinRT ListView is just a child class of ListViewBase without adding any functionality. It is because ListViewBase class implement the ISemanticZoomInformation interface. </p>
<p>In WPF we can use the GridView to display multiple columns in ListView, but in WinRT there is no View property in ListView. Therefore we have to define the item template and define layout there. Here is a XAML code to do this in WinRT. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6b2e558a-192c-4357-9257-0a7494f85338" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#ff0000;"> Background</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> ApplicationPageBackgroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListView</span><span style="background:#ffffff;color:#ff0000;"> ItemsSource</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span><span style="background:#ffffff;color:#ff0000;"> HorizontalContentAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot;&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ListView.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ColumnDefinition</span><span style="background:#ffffff;color:#0000ff;">/&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid.ColumnDefinitions</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Name}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Abbrivation}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> Grid.Column</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;2&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">Binding</span><span style="background:#ffffff;color:#ff0000;"> Capital}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />                 <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">DataTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListView.ItemTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ListView</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is its output of this program. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/winrtlistviewoutput.jpg"><img title="WinRTListViewOutput" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="WinRTListViewOutput" src="http://zamjad.files.wordpress.com/2012/10/winrtlistviewoutput_thumb.jpg?w=404&#038;h=229" width="404" height="229" /></a></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/'>Controls</a>, <a href='http://zamjad.wordpress.com/category/wpf/controls/listview/'>ListView</a>, <a href='http://zamjad.wordpress.com/category/winrt/listview-winrt/'>ListView</a>, <a href='http://zamjad.wordpress.com/category/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/category/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/category/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/category/xaml/'>XAML</a> Tagged: <a href='http://zamjad.wordpress.com/tag/net/'>.Net</a>, <a href='http://zamjad.wordpress.com/tag/control/'>Control</a>, <a href='http://zamjad.wordpress.com/tag/controls/'>Controls</a>, <a href='http://zamjad.wordpress.com/tag/listview/'>ListView</a>, <a href='http://zamjad.wordpress.com/tag/metro-ui/'>Metro UI</a>, <a href='http://zamjad.wordpress.com/tag/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/tag/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/tag/wpf/'>WPF</a>, <a href='http://zamjad.wordpress.com/tag/xaml/'>XAML</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1917/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1917&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/10/30/listview-comparision-in-wpf-and-winrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/winrtlistview_class_hierarchy_thumb.jpg" medium="image">
			<media:title type="html">WinRTListView_Class_Hierarchy</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/wpflistview_class_hierarchy_thumb.jpg" medium="image">
			<media:title type="html">WPFListView_Class_Hierarchy</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/winrtlistview_thumb.jpg" medium="image">
			<media:title type="html">WinRTListView</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/wpflistview_thumb.jpg" medium="image">
			<media:title type="html">WPFListView</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/winrtlistviewoutput_thumb.jpg" medium="image">
			<media:title type="html">WinRTListViewOutput</media:title>
		</media:content>
	</item>
		<item>
		<title>Define styles for AppBar buttons</title>
		<link>http://zamjad.wordpress.com/2012/10/21/define-styles-for-appbar-buttons/</link>
		<comments>http://zamjad.wordpress.com/2012/10/21/define-styles-for-appbar-buttons/#comments</comments>
		<pubDate>Mon, 22 Oct 2012 05:19:35 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[AppBar]]></category>
		<category><![CDATA[Modern UI]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[Metro UI]]></category>
		<category><![CDATA[StandardStyles]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1905</guid>
		<description><![CDATA[We already saw the usage of few standard styles in AppBar button here. StandardStyles.xaml already defined lots of styles. Here is one example from the StandardStyles.xaml file. Code Snippet &#60;Style x:Key=&#34;SettingsAppBarButtonStyle&#34; TargetType=&#34;ButtonBase&#34; BasedOn=&#34;{StaticResource AppBarButtonStyle}&#34;&#62;     &#60;Setter Property=&#34;AutomationProperties.AutomationId&#34; Value=&#34;SettingsAppBarButton&#34;/&#62;     &#60;Setter Property=&#34;AutomationProperties.Name&#34; Value=&#34;Settings&#34;/&#62;     &#60;Setter Property=&#34;Content&#34; Value=&#34;&#xE115;&#34;/&#62; &#60;/Style&#62; &#160; But we how do I know the look and feel [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1905&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>We already saw the usage of few standard styles in AppBar button <a href="http://zamjad.wordpress.com/2012/10/19/define-the-appbar-in-winrt-aplication/">here</a>. StandardStyles.xaml already defined lots of styles. Here is one example from the StandardStyles.xaml file. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:11f4b141-3571-4f1e-ad2a-749f7986bf1d" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Key</span><span style="background:#ffffff;color:#0000ff;">=&quot;SettingsAppBarButtonStyle&quot;</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;ButtonBase&quot;</span><span style="background:#ffffff;color:#ff0000;"> BasedOn</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;AutomationProperties.AutomationId&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;SettingsAppBarButton&quot;/&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;AutomationProperties.Name&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Settings&quot;/&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;&#xE115;&quot;/&gt;</span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>But we how do I know the look and feel of this style. The easiest way to see this is open the Windows Character map and type Segoe UI Symbol from the Font combo box and here you will see all the symbols as shown in the screen shot. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/charactermap.jpg"><img title="CharacterMap" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;border-left:0;display:inline;padding-right:0;" border="0" alt="CharacterMap" src="http://zamjad.files.wordpress.com/2012/10/charactermap_thumb.jpg?w=494&#038;h=423" width="494" height="423" /></a></p>
<p>In same way we can define our own styles, just by looking at the character map. Here is one style we defined that is not present in StandardStyles.xaml file. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0571bfdd-7a4e-47f7-acb3-7e5620aef5e5" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Key</span><span style="background:#ffffff;color:#0000ff;">=&quot;WatchAppBarButtonStyle&quot;</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;ButtonBase&quot;</span><span style="background:#ffffff;color:#ff0000;"> BasedOn</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;AutomationProperties.AutomationId&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;WatchAppBarButton&quot;/&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;AutomationProperties.Name&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Watch&quot;/&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;&#x231A;&quot;/&gt;</span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Let’s see how it looks like when used in AppBar. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:fb542314-1f42-4121-a879-cf0683ce6203" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#ff0000;"> Orientation</span><span style="background:#ffffff;color:#0000ff;">=&quot;Horizontal&quot;&gt;</span><br />             <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> WatchAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span><br />         <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is the output of this program. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbardemo_05.jpg"><img title="AppBarDemo_05" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="AppBarDemo_05" src="http://zamjad.files.wordpress.com/2012/10/appbardemo_05_thumb.jpg?w=404&#038;h=229" width="404" height="229" /></a></p>
<p>There is nothing specific to Segoe UI Symbol. We can define the style for any type of font. Here is one example to define style for another symbol which is not in Segoe UI Symbol. </p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e7b57136-dab4-4f61-8653-6d381a9ef016" class="wlWriterEditableSmartContent" style="float:none;margin:0;display:inline;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Key</span><span style="background:#ffffff;color:#0000ff;">=&quot;AllahAppBarButtonStyle&quot;</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;ButtonBase&quot;</span><span style="background:#ffffff;color:#ff0000;"> BasedOn</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;AutomationProperties.AutomationId&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;AllahAppBarButton&quot;/&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;AutomationProperties.Name&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Allah&quot;/&gt;</span><br />     <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;&#xFDF2;&quot;/&gt;</span><br /> <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>And here is its output. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbardemo_06.jpg"><img title="AppBarDemo_06" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" border="0" alt="AppBarDemo_06" src="http://zamjad.files.wordpress.com/2012/10/appbardemo_06_thumb.jpg?w=404&#038;h=229" width="404" height="229" /></a></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/winrt/appbar/'>AppBar</a>, <a href='http://zamjad.wordpress.com/category/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/category/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/category/xaml/'>XAML</a> Tagged: <a href='http://zamjad.wordpress.com/tag/appbar/'>AppBar</a>, <a href='http://zamjad.wordpress.com/tag/metro-ui/'>Metro UI</a>, <a href='http://zamjad.wordpress.com/tag/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/tag/standardstyles/'>StandardStyles</a>, <a href='http://zamjad.wordpress.com/tag/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/tag/xaml/'>XAML</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1905/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1905/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1905&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/10/21/define-styles-for-appbar-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/charactermap_thumb.jpg" medium="image">
			<media:title type="html">CharacterMap</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbardemo_05_thumb.jpg" medium="image">
			<media:title type="html">AppBarDemo_05</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbardemo_06_thumb.jpg" medium="image">
			<media:title type="html">AppBarDemo_06</media:title>
		</media:content>
	</item>
		<item>
		<title>Define the AppBar in WinRT application</title>
		<link>http://zamjad.wordpress.com/2012/10/19/define-the-appbar-in-winrt-aplication/</link>
		<comments>http://zamjad.wordpress.com/2012/10/19/define-the-appbar-in-winrt-aplication/#comments</comments>
		<pubDate>Sat, 20 Oct 2012 00:08:07 +0000</pubDate>
		<dc:creator>Zeeshan Amjad</dc:creator>
				<category><![CDATA[AppBar]]></category>
		<category><![CDATA[Modern UI]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[Metro UI]]></category>
		<category><![CDATA[StandardStyles]]></category>

		<guid isPermaLink="false">https://zamjad.wordpress.com/?p=1896</guid>
		<description><![CDATA[Define the AppBar in WinRT application is very easy. We have to set the BottomAppBar property of Page class. Let’s first explore the AppBar class first. AppBar is a content control as shown by this class hierarchy diagram. WPF programmer one noticeable difference here. And the difference is that UIElement is directly inherited by DependencyObject [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1896&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Define the AppBar in WinRT application is very easy. We have to set the BottomAppBar property of Page class. Let’s first explore the AppBar class first. AppBar is a content control as shown by this class hierarchy diagram. </p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbarclasshierarchy.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="AppBarClassHierarchy" border="0" alt="AppBarClassHierarchy" src="http://zamjad.files.wordpress.com/2012/10/appbarclasshierarchy_thumb.jpg?w=167&#038;h=665" width="167" height="665" /></a></p>
<p>WPF programmer one noticeable difference here. And the difference is that UIElement is directly inherited by DependencyObject class not with Visual class as it is happening in WPF. It means that in WinRT whatever is display on the screen is UIElement class responsibility. App bar class just introduced two new dependency properties and two new virtual methods. Here is a class diagram of AppBar class.</p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbar.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="AppBar" border="0" alt="AppBar" src="http://zamjad.files.wordpress.com/2012/10/appbar_thumb.jpg?w=335&#038;h=375" width="335" height="375" /></a></p>
<p>Its usage is very simple, just create the AppBar object and assigned it to BottomAppBar property. Let’s first explore the Page class. Page class is inherited by UserControl class. Here is class diagram of it.</p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/page.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="Page" border="0" alt="Page" src="http://zamjad.files.wordpress.com/2012/10/page_thumb.jpg?w=431&#038;h=406" width="431" height="406" /></a></p>
<p>&#160;</p>
<p>From the class diagram it is shown that we can not only display the BottomAppBar, but also display the TopAppBar. Let’s do it. Here is a simple code to just demonstrate the AppBar.</p>
<div style="width:496px;display:block;float:none;margin-left:auto;margin-right:auto;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:91394659-cf3e-4da3-a56a-25551d216dff" class="wlWriterSmartContent">
<div style="border-bottom:#000080 1px solid;border-left:#000080 1px solid;font-family:&#039;color:#000;font-size:10pt;border-top:#000080 1px solid;border-right:#000080 1px solid;">
<div style="font-family:verdana, tahoma, arial, sans-serif;background:#000080;color:#fff;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;white-space:nowrap;overflow:auto;padding:2px 5px;"><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br />&#160;&#160;&#160; <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Content</span><span style="background:#ffffff;color:#0000ff;">=&quot;Top&quot;/&gt;</span>        <br />&#160;&#160;&#160; <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br />&#160;&#160;&#160; <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Content</span><span style="background:#ffffff;color:#0000ff;">=&quot;Bottom&quot;/&gt;</span>        <br />&#160;&#160;&#160; <span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;"></span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is the output of this program.</p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbardemo_01.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="AppBarDemo_01" border="0" alt="AppBarDemo_01" src="http://zamjad.files.wordpress.com/2012/10/appbardemo_01_thumb.jpg?w=404&#038;h=229" width="404" height="229" /></a></p>
<p>But it doesn’t look good and not following the metro guidelines. Fortunately Visual Studio created a proper style for us in StandardStyle.xaml file. You can see all the standard style and use it. There are lots of styles commented out, so don’t forget to uncomment those before using it. Let’s use the style for AppBar button if there is any. Here is a style for AppBar button define in the StandardStyle.xaml file with name “AppBarButtonStyle”.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:77673cec-876c-4074-97f3-6567001463b8" class="wlWriterSmartContent">
<div style="border-bottom:#000080 1px solid;border-left:#000080 1px solid;font-family:&#039;color:#000;font-size:10pt;border-top:#000080 1px solid;border-right:#000080 1px solid;">
<div style="font-family:verdana, tahoma, arial, sans-serif;background:#000080;color:#fff;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;white-space:nowrap;overflow:auto;padding:2px 5px;"><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Key</span><span style="background:#ffffff;color:#0000ff;">=&quot;AppBarButtonStyle&quot;</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;ButtonBase&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;VerticalAlignment&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Stretch&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;FontFamily&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Segoe UI Symbol&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;FontWeight&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Normal&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;FontSize&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;20&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;AutomationProperties.ItemType&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;App Bar Button&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#ff0000;"> Property</span><span style="background:#ffffff;color:#0000ff;">=&quot;Template&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Setter.Value</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ControlTemplate</span><span style="background:#ffffff;color:#ff0000;"> TargetType</span><span style="background:#ffffff;color:#0000ff;">=&quot;ButtonBase&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;RootGrid&quot;</span><span style="background:#ffffff;color:#ff0000;"> Width</span><span style="background:#ffffff;color:#0000ff;">=&quot;100&quot;</span><span style="background:#ffffff;color:#ff0000;"> Background</span><span style="background:#ffffff;color:#0000ff;">=&quot;Transparent&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#ff0000;"> VerticalAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Top&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;0,12,0,11&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#ff0000;"> Width</span><span style="background:#ffffff;color:#0000ff;">=&quot;40&quot;</span><span style="background:#ffffff;color:#ff0000;"> Height</span><span style="background:#ffffff;color:#0000ff;">=&quot;40&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;0,0,0,5&quot;</span><span style="background:#ffffff;color:#ff0000;"> HorizontalAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Center&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;BackgroundGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;&quot;</span><span style="background:#ffffff;color:#ff0000;"> FontFamily</span><span style="background:#ffffff;color:#0000ff;">=&quot;Segoe UI Symbol&quot;</span><span style="background:#ffffff;color:#ff0000;"> FontSize</span><span style="background:#ffffff;color:#0000ff;">=&quot;53.333&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;-4,-19,0,0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Foreground</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemBackgroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;OutlineGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;&quot;</span><span style="background:#ffffff;color:#ff0000;"> FontFamily</span><span style="background:#ffffff;color:#0000ff;">=&quot;Segoe UI Symbol&quot;</span><span style="background:#ffffff;color:#ff0000;"> FontSize</span><span style="background:#ffffff;color:#0000ff;">=&quot;53.333&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;-4,-19,0,0&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ContentPresenter</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> HorizontalAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Center&quot;</span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;-1,-1,0,0&quot;</span><span style="background:#ffffff;color:#ff0000;"> VerticalAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Center&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">TextBlock</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;TextLabel&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Text</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">TemplateBinding</span><span style="background:#ffffff;color:#ff0000;"> AutomationProperties</span><span style="background:#ffffff;color:#0000ff;">.Name}&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Foreground</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Margin</span><span style="background:#ffffff;color:#0000ff;">=&quot;0,0,2,0&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> FontSize</span><span style="background:#ffffff;color:#0000ff;">=&quot;12&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> TextAlignment</span><span style="background:#ffffff;color:#0000ff;">=&quot;Center&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Width</span><span style="background:#ffffff;color:#0000ff;">=&quot;88&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> MaxHeight</span><span style="background:#ffffff;color:#0000ff;">=&quot;32&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> TextTrimming</span><span style="background:#ffffff;color:#0000ff;">=&quot;WordEllipsis&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> BasicTextStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Rectangle</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;FocusVisualWhite&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> IsHitTestVisible</span><span style="background:#ffffff;color:#0000ff;">=&quot;False&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Stroke</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> FocusVisualWhiteStrokeThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> StrokeEndLineCap</span><span style="background:#ffffff;color:#0000ff;">=&quot;Square&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> StrokeDashArray</span><span style="background:#ffffff;color:#0000ff;">=&quot;1,1&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Opacity</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> StrokeDashOffset</span><span style="background:#ffffff;color:#0000ff;">=&quot;1.5&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Rectangle</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;FocusVisualBlack&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> IsHitTestVisible</span><span style="background:#ffffff;color:#0000ff;">=&quot;False&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Stroke</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> FocusVisualBlackStrokeThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> StrokeEndLineCap</span><span style="background:#ffffff;color:#0000ff;">=&quot;Square&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> StrokeDashArray</span><span style="background:#ffffff;color:#0000ff;">=&quot;1,1&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Opacity</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> StrokeDashOffset</span><span style="background:#ffffff;color:#0000ff;">=&quot;0.5&quot;/&gt;</span>        </p>
<p><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualStateManager.VisualStateGroups</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;ApplicationViewStates&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;FullScreenLandscape&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Filled&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;FullScreenPortrait&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;TextLabel&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Visibility&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Collapsed&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;RootGrid&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Width&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;60&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Snapped&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;TextLabel&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Visibility&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Collapsed&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;RootGrid&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Width&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;60&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;CommonStates&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Normal&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;PointerOver&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;BackgroundGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemPointerOverBackgroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemPointerOverForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Pressed&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;OutlineGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;BackgroundGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemPressedForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Disabled&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;OutlineGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemDisabledForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemDisabledForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;TextLabel&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemDisabledForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;FocusStates&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Focused&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DoubleAnimation</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;FocusVisualWhite&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Opacity&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> To</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Duration</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DoubleAnimation</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;FocusVisualBlack&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Opacity&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> To</span><span style="background:#ffffff;color:#0000ff;">=&quot;1&quot;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#ff0000;"> Duration</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Unfocused&quot; /&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;PointerFocused&quot; /&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;CheckStates&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Checked&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DoubleAnimation</span><span style="background:#ffffff;color:#ff0000;"> Duration</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> To</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;OutlineGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Opacity&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;BackgroundGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;BackgroundCheckedGlyph&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Visibility&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;Visible&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetName</span><span style="background:#ffffff;color:#0000ff;">=&quot;Content&quot;</span><span style="background:#ffffff;color:#ff0000;"> Storyboard.TargetProperty</span><span style="background:#ffffff;color:#0000ff;">=&quot;Foreground&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">DiscreteObjectKeyFrame</span><span style="background:#ffffff;color:#ff0000;"> KeyTime</span><span style="background:#ffffff;color:#0000ff;">=&quot;0&quot;</span><span style="background:#ffffff;color:#ff0000;"> Value</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarItemPressedForegroundThemeBrush}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ObjectAnimationUsingKeyFrames</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Storyboard</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Unchecked&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">VisualState</span><span style="background:#ffffff;color:#ff0000;"> x</span><span style="background:#ffffff;color:#0000ff;">:</span><span style="background:#ffffff;color:#ff0000;">Name</span><span style="background:#ffffff;color:#0000ff;">=&quot;Indeterminate&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualStateGroup</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">VisualStateManager.VisualStateGroups</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Grid</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">ControlTemplate</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Setter.Value</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Setter</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Style</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Visual Studio did a lot of work for us. Let’s use this style. Here is our new code for AppBar.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d29bae53-59c1-4df2-8ac2-c6df8979506e" class="wlWriterSmartContent">
<div style="border-bottom:#000080 1px solid;border-left:#000080 1px solid;font-family:&#039;color:#000;font-size:10pt;border-top:#000080 1px solid;border-right:#000080 1px solid;">
<div style="font-family:verdana, tahoma, arial, sans-serif;background:#000080;color:#fff;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;white-space:nowrap;overflow:auto;padding:2px 5px;"><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Content</span><span style="background:#ffffff;color:#0000ff;">=&quot;Top&quot;</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Content</span><span style="background:#ffffff;color:#0000ff;">=&quot;Bottom&quot;</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> AppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is a output of this program.</p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbardemo_02.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="AppBarDemo_02" border="0" alt="AppBarDemo_02" src="http://zamjad.files.wordpress.com/2012/10/appbardemo_02_thumb.jpg?w=404&#038;h=229" width="404" height="229" /></a></p>
<p>Better than previous attempt, but still not perfect. Specially word bottom can’t fit perfectly inside the button, and this is because we are still not following the UI guideline fully. For this Visual Studio generated lots of styles based on AppBarButtonStyle. Let’s use those, but first we have to uncomment those. Here is our new code.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f0d1f830-7637-4bf9-b610-12c8f324ca47" class="wlWriterSmartContent">
<div style="border-bottom:#000080 1px solid;border-left:#000080 1px solid;font-family:&#039;color:#000;font-size:10pt;border-top:#000080 1px solid;border-right:#000080 1px solid;">
<div style="font-family:verdana, tahoma, arial, sans-serif;background:#000080;color:#fff;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;white-space:nowrap;overflow:auto;padding:2px 5px;"><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> SkipBackAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> SkipAheadAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Note that we even don’t define the Content property, because it is defined by Style. Here is the output of this program.</p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbardemo_03.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="AppBarDemo_03" border="0" alt="AppBarDemo_03" src="http://zamjad.files.wordpress.com/2012/10/appbardemo_03_thumb.jpg?w=404&#038;h=229" width="404" height="229" /></a></p>
<p>StandardStyles.xaml defines lots of styles and it is worth consuming time to explore these. We can even define layout in the AppBar to display more than one control and use Grid, StackPanel etc. Let’s see one example.</p>
<div style="margin:0;display:inline;float:none;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1cff96a8-105b-4f31-a00f-20f98b973840" class="wlWriterSmartContent">
<div style="border-bottom:#000080 1px solid;border-left:#000080 1px solid;font-family:&#039;color:#000;font-size:10pt;border-top:#000080 1px solid;border-right:#000080 1px solid;">
<div style="font-family:verdana, tahoma, arial, sans-serif;background:#000080;color:#fff;font-weight:bold;padding:2px 5px;">Code Snippet</div>
<div style="background-color:#ffffff;white-space:nowrap;overflow:auto;padding:2px 5px;"><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#ff0000;"> Orientation</span><span style="background:#ffffff;color:#0000ff;">=&quot;Horizontal&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> SkipBackAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> SkipAheadAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.TopAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#ff0000;"> Orientation</span><span style="background:#ffffff;color:#0000ff;">=&quot;Horizontal&quot;&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> PlayAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> PauseAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> EditAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> SaveAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> DeleteAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> DiscardAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;</span><span style="background:#ffffff;color:#a31515;">Button</span><span style="background:#ffffff;color:#ff0000;"> Style</span><span style="background:#ffffff;color:#0000ff;">=&quot;{</span><span style="background:#ffffff;color:#a31515;">StaticResource</span><span style="background:#ffffff;color:#ff0000;"> RemoveAppBarButtonStyle}</span><span style="background:#ffffff;color:#0000ff;">&quot;/&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">StackPanel</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">AppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span>        <br /><span style="background:#ffffff;color:#000000;">&#160;&#160;&#160; </span><span style="background:#ffffff;color:#0000ff;">&lt;/</span><span style="background:#ffffff;color:#a31515;">Page.BottomAppBar</span><span style="background:#ffffff;color:#0000ff;">&gt;</span></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Here is the output of this program.</p>
<p><a href="http://zamjad.files.wordpress.com/2012/10/appbardemo_04.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="AppBarDemo_04" border="0" alt="AppBarDemo_04" src="http://zamjad.files.wordpress.com/2012/10/appbardemo_04_thumb.jpg?w=404&#038;h=229" width="404" height="229" /></a></p>
<br />Filed under: <a href='http://zamjad.wordpress.com/category/winrt/appbar/'>AppBar</a>, <a href='http://zamjad.wordpress.com/category/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/category/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/category/xaml/'>XAML</a> Tagged: <a href='http://zamjad.wordpress.com/tag/appbar/'>AppBar</a>, <a href='http://zamjad.wordpress.com/tag/metro-ui/'>Metro UI</a>, <a href='http://zamjad.wordpress.com/tag/modern-ui/'>Modern UI</a>, <a href='http://zamjad.wordpress.com/tag/standardstyles/'>StandardStyles</a>, <a href='http://zamjad.wordpress.com/tag/winrt/'>WinRT</a>, <a href='http://zamjad.wordpress.com/tag/xaml/'>XAML</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/zamjad.wordpress.com/1896/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/zamjad.wordpress.com/1896/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=zamjad.wordpress.com&#038;blog=8548805&#038;post=1896&#038;subd=zamjad&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://zamjad.wordpress.com/2012/10/19/define-the-appbar-in-winrt-aplication/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/17220d61186226d4c57607dd9dc81806?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">zamjad</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbarclasshierarchy_thumb.jpg" medium="image">
			<media:title type="html">AppBarClassHierarchy</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbar_thumb.jpg" medium="image">
			<media:title type="html">AppBar</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/page_thumb.jpg" medium="image">
			<media:title type="html">Page</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbardemo_01_thumb.jpg" medium="image">
			<media:title type="html">AppBarDemo_01</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbardemo_02_thumb.jpg" medium="image">
			<media:title type="html">AppBarDemo_02</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbardemo_03_thumb.jpg" medium="image">
			<media:title type="html">AppBarDemo_03</media:title>
		</media:content>

		<media:content url="http://zamjad.files.wordpress.com/2012/10/appbardemo_04_thumb.jpg" medium="image">
			<media:title type="html">AppBarDemo_04</media:title>
		</media:content>
	</item>
	</channel>
</rss>
