<?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/"
	>

<channel>
	<title>Veracity Solutions Blog</title>
	<atom:link href="http://blogs.veracitysolutions.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.veracitysolutions.com</link>
	<description>Software Consulting That Rocks</description>
	<lastBuildDate>Thu, 22 Apr 2010 17:21:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Introducing Pillbox for Windows Phone</title>
		<link>http://blogs.veracitysolutions.com/introducing-pillbox-for-windows-phone/</link>
		<comments>http://blogs.veracitysolutions.com/introducing-pillbox-for-windows-phone/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 15:31:10 +0000</pubDate>
		<dc:creator>Jason Alderman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=735</guid>
		<description><![CDATA[Meet Pillbox.  Pillbox is an open-source Windows Phone 7 application we&#8217;ve put together that helps you track medications and take care of your friends and loved ones.

We know how hard it can be to take care of friends and relatives (and yourself) when you have multiple prescriptions that need to be taken on strict [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://veracitysolutions.com/Pillbox">Meet Pillbox.</a>  Pillbox is an open-source Windows Phone 7 application we&#8217;ve put together that helps you track medications and take care of your friends and loved ones.<br />
<a href="http://veracitysolutions.com/Pillbox"><img src="http://blogs.veracitysolutions.com/wp-content/uploads/2010/04/pillb1-e1271899813881.png" alt="Pillbox Home Panorama" title="Pillbox Home Panorama" width="640" height="399" class="alignnone size-full wp-image-737" /></a><br />
We know how hard it can be to take care of friends and relatives (and <i>yourself</i>) when you have multiple prescriptions that need to be taken on strict schedules.  So we spent a two-week iteration to build a proof-of-concept app that tracks <strong>medication schedules</strong>, gives you <strong>more information about the prescriptions you have</strong> (and when they need <strong>refills or renewals</strong>), and helps you communicate and coordinate with <strong>fellow caregivers and family doctors</strong>.  </p>
<p>We designed it to integrate with <strong>Microsoft HealthVault</strong>, so all of this information would be stored securely in the cloud.</p>
<p><a href="http://blogs.veracitysolutions.com/wp-content/uploads/2010/04/pillb2.png"><img src="http://blogs.veracitysolutions.com/wp-content/uploads/2010/04/pillb2.png" alt="Contact Details and Medication Schedule Screens" title="Contact Details and Medication Schedule Screens" width="600" height="439" class="alignnone size-full wp-image-736" /></a></p>
<p><strong>Richard Wulfenstein</strong> was our visual designer on the project, producing all of the Illustrator comps, helping map out the information architecture, <i>and</i> learning Expression Blend and XAML within the two weeks, to boot.  </p>
<p><strong>Joe McBride</strong> was the team&#8217;s lead developer, setting up the project with the Managed Extensibility Framework (MEF) and a flavor of <a href="http://live.visitmix.com/MIX10/Sessions/EX15">Rob Eisenberg</a>&#8217;s Model-View-ViewModel (MVVM) that kept everything wonderfully &#8220;Blendable&#8221; with design-time data throughout the project.  He also cooked up some handy <a href="http://blogs.veracitysolutions.com/windows-phone-7-panorama-behaviors/">swipe-gesture Blend Behaviors</a> for rolling your Panorama view (as you may have already seen on the blogs here).</p>
<p><strong>Matthias Shapiro</strong> orchestrated our initial user research interviews, collaborated to develop our personas and scenarios, and pinch-hit with some of the early integration work.</p>
<p><strong>Jason Alderman</strong> was the user experience designer on the project, working with Matthias to conduct user research and refine the scenario, leading the team in whiteboard sketch sessions, designing animations <a href="http://windowsphone7series.com/">based on the existing samples</a>, planning out the application flow and interactions, and integrating Richard&#8217;s comps into XAML.</p>
<p>It was a rewarding experience for all of us, and we&#8217;re excited to share it with you.  <a href="http://veracitysolutions.com/pillbox">Read more about the project and download the code here,</a> and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/introducing-pillbox-for-windows-phone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 Panorama Behaviors</title>
		<link>http://blogs.veracitysolutions.com/windows-phone-7-panorama-behaviors/</link>
		<comments>http://blogs.veracitysolutions.com/windows-phone-7-panorama-behaviors/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 15:55:20 +0000</pubDate>
		<dc:creator>Joe McBride</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=729</guid>
		<description><![CDATA[I created a couple Windows Phone 7 Behaviors that you can use to easily add swipe functionality. Download the source here.

You can find a couple other great Windows Phone 7 videos by Roger Peters (SmartyP) here.
]]></description>
			<content:encoded><![CDATA[<p>I created a couple <a href="http://xamlcoder.com/blog/wp-content/uploads/2010/04/WP7Swipe.zip">Windows Phone 7 Behaviors</a> that you can use to easily add swipe functionality. Download the <a href="http://xamlcoder.com/blog/wp-content/uploads/2010/04/WP7Swipe.zip">source here</a>.</p>
<p><object type="application/x-shockwave-flash" data="http://vimeo.com/moogaloop.swf" width="500" height="375"><param name="allowscriptaccess" value="always"/><param name="allowfullscreen" value="true"/><param name="movie" value="http://vimeo.com/moogaloop.swf"/><param name="flashvars" value="clip_id=10827961&#038;server=vimeo.com&#038;fullscreen=1&#038;show_title=1&#038;show_byline=1&#038;show_portrait=1&#038;color=00ADEF"/></object></p>
<p>You can find a couple other great Windows Phone 7 videos by <a href="http://twitter.com/smartyp" target="_blank">Roger Peters (SmartyP)</a> <a href="http://vimeo.com/user3299649" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/windows-phone-7-panorama-behaviors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIX10 &#8220;Information Visualization in Silverlight&#8221; Slides</title>
		<link>http://blogs.veracitysolutions.com/mix10-information-visualization-in-silverlight-slides/</link>
		<comments>http://blogs.veracitysolutions.com/mix10-information-visualization-in-silverlight-slides/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:29:31 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=727</guid>
		<description><![CDATA[For everyone who wants to take a look, here are the slides for my MIX10 information visualization talk.
MIX10 &#8220;Effective Information Visualization in Silverlight
I&#8217;ll post the code from the presentation when I catch my breath.
]]></description>
			<content:encoded><![CDATA[<p>For everyone who wants to take a look, here are the slides for my MIX10 information visualization talk.</p>
<p><a href="http://www.designersilverlight.com/wp-content/uploads/MIX10_InfoViz_Slides.pptx">MIX10 &#8220;Effective Information Visualization in Silverlight</a></p>
<p>I&#8217;ll post the code from the presentation when I catch my breath.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/mix10-information-visualization-in-silverlight-slides/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Roles of User Experience Design: User Research</title>
		<link>http://blogs.veracitysolutions.com/roles-of-user-experience-design-user-research/</link>
		<comments>http://blogs.veracitysolutions.com/roles-of-user-experience-design-user-research/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 04:46:20 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[UX Methodology]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[User Research]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=693</guid>
		<description><![CDATA[This is the second post in a series on User Experience design. See other posts here:

Introduction to User Experience (UX) Design

User Research
Definition
User research means learning about your users &#8211; your customers – by gathering data and testing designs for the two purposes of discovery and evaluation. User research answers questions like the following:

What is the [...]]]></description>
			<content:encoded><![CDATA[<p>This is the second post in a series on User Experience design. See other posts here:</p>
<ul>
<li><a href="http://blogs.veracitysolutions.com/introduction-to-user-experience-ux-design/">Introduction to User Experience (UX) Design</a></li>
</ul>
<h2>User Research</h2>
<h3>Definition</h3>
<p><strong>User research</strong> means learning about your users &#8211; your customers – by gathering data and testing designs for the two purposes of <em>discovery</em> and <em>evaluation</em>. User research answers questions like the following:</p>
<ul>
<li>What is the user&#8217;s workflow for their job (or given tasks)?</li>
<li>What do users want to ultimately <em>do</em>?</li>
<li>What terminology do they use? (what&#8217;s their domain language?)</li>
<li>How well does your software help users do what they need to do?</li>
<li>How well does the software match users&#8217; <em>mental model</em> of what they expect it should do?</li>
<li>What parts of your software do users find confusing?</li>
<li>What parts of your software do users love?</li>
</ul>
<p>The data you get from user research is both <strong>quantitative</strong> (hard numbers and statistics that tell you what is happening) and <strong>qualitative</strong> (observed behaviors and user rationales that give you the context of why).</p>
<h3>How it fits into Agile</h3>
<p>The trick about Agile and UX is that <strong>Agile development already involves user research</strong>.</p>
<p>Agile has a discovery process, in which we gather user stories from actual users and map them into goals, activities, and stories on a story wall. Discovery is about learning how users do their tasks and how your software can help them do what they need to do efficiently.</p>
<p>We also do evaluations, in which we show our designs or working prototype code to the customer (as a user or user advocate) for feedback, at the end of each iteration. Usability testing has a reputation for being formal and summative (when everything is done), but it&#8217;s just as useful when formative (while you&#8217;re building things) and the Agile methodology (done right) actually has an insertion point where the user research that has been gathered can usefully inform the on-going product development.</p>
<p>Making it a more formal part of the process gives Agile development <strong>three benefits</strong>:</p>
<ol>
<li>It makes getting feedback from users an explicit part of Agile development, so that we can get the info we need at the end of each iteration, throughout the design and development process, and make quick course corrections.</li>
<li>It gives us a &#8220;utility belt&#8221; of best practices for gathering data and evaluating software with users, so that the information we have is more accurate, and saves money and time.</li>
<li>The data we gather helps us make models of how users think and act, and having a rich model means that <a href="http://www.thinkingandmaking.com/view/agile-ux-six">designing (and redesigning) is much more rapid</a>.</li>
</ol>
<h3>User Research methods</h3>
<p>User research gathers data through a variety of methods. The methods we most commonly advocate are:</p>
<p>Field observations (watching users&#8217; behavior in context)</p>
<ul>
<li>semi-structured interviews (asking users both prepared and extemporaneous questions)</li>
<li>data logging (collecting statistics on software usage)</li>
<li>diary studies (asking users to record their experiences)</li>
</ul>
<p>Usability testing puts designs (sketches, or prototype code) in front of users, and then uses all of the methods above to get feedback and evaluate design decisions. [We've written far more information about these methods <a title="User Research Methods" href="http://wiki.veracitysolutions.com/confluence/display/veracity/User+Research+Methods">over here</a>.]</p>
<h3>What deliverables can I expect from User Research?</h3>
<p>Data gathering gives us the information we need to build a model of the users. This generally manifests itself in personas (write-ups describing the different typical users of your software) and in the user stories of an Agile story wall. As further data is gathered, the stories may change, and the story wall is an evolving model for a user&#8217;s workflow and needs.</p>
<p>Evaluation findings and raw data are kept in whatever system the team is using to document design. We recommend a wiki or blog as a repository for user research findings (and as a journal of design decisions for the rest of the UX design).</p>
<p>Findings should identify problems that need fixing and provide data to support the finding.</p>
<p><strong>Example: </strong>a wiki page with video that shows a user getting confused when trying to submit a form on a specific screen of your application. (There should be video of both the person&#8217;s reaction and the screen they see.)</p>
<p>User research informs decisions and makes recommendations, but should not prescribe how to fix the problems identified.</p>
<p>Keep in mind that there is <em>no such thing</em> as &#8220;fixing problems proactively&#8221;. Every piece of software is going to have problems and every piece of software is going to need to have the experience fixed. Many people have the idea that a good enough UX designer will be able to spot problems with their magical designer intuition and fix them without any contact with the target users. While there are best practices in terms of layout, color, type and flow, it is impossible to build a perfect application on the first try.</p>
<h3>Where in the development process does User Research fit?</h3>
<p>User research should occur throughout the entire design and development process. Before any coding begins and iterations begin in earnest, it is a vital component for properly identifying stories and the tasks associated with them.</p>
<p>For more specific information about how to implement the various user research tasks into the development process, see the chart in “User Experience and App Workflow”.</p>
<h3>What benefits can I expect from User Research?</h3>
<p>As mentioned before, user research is already a native part of Agile methodology; you&#8217;re not buying something extra by doing user research. If you don&#8217;t do it, you&#8217;re taking something OUT of Agile and weakening the strength of the methodology in the process.</p>
<p>As stated above, formalizing user research helps you set up an infrastructure for getting feedback on a more regular basis so that you can be more agile, and helps you be the most efficient and get the most accurate data when gathering feedback from users. User research helps you better understand the needs of your customers, identify software requirements, prioritize features and drive product strategy. This results in spending appropriate time and money on features that deliver the greatest return on investment (ROI).</p>
<p><em>(Silverlight/WPF technologies have some specific ROI benefits for gathering data. See below.)</em></p>
<h3>How do Silverlight/WPF technologies help me with User Research?</h3>
<p>The biggest aspect of the current Silvelright/WPF technogies that aids in user research is the SketchFlow application that comes as a part of Blend 3 (and later versions).</p>
<p>In early product planning and development,  SketchFlow lets you mock-up an interactive prototype that you can put in front of users in order to quickly collect feedback. While the system is not yet perfected, it offers significant savings over traditional shoe-leather data gathering.</p>
<p>For more developed projects, it is possible to hook <a href="http://mark.mymonster.nl/2009/02/15/tracking-silverlight-support-in-google-analytics/">Google Analytics into Silverlight</a> projects and let it listen for certain events. However, the most effective (and cheapest) method we&#8217;ve found is the old fashioned methods of user interviews and observation.</p>
<h2>Additional User Research links</h2>
<p>D. Chisnell. <em>Usability Testing Demystified</em>. (2009)<br />
<a href="http://www.alistapart.com/articles/usability-testing-demystified/">http://www.alistapart.com/articles/usability-testing-demystified/</a><br />
Straight-forward explanation of what usability testing is, how to do it, and why it doesn&#8217;t need to be formal summative testing.</p>
<p>S. Krug. <em>Don&#8217;t Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition</em>. (2005)<br />
<a href="http://www.amazon.com/exec/obidos/ASIN/0321344758/ref=nosim/advancedcommonse">http://www.amazon.com/exec/obidos/ASIN/0321344758/ref=nosim/advancedcommonse</a><br />
S. Krug. <em>Rocket Surgery Made Easy: A Do-It-Yourself Guide to Finding and Fixing Usability Problems</em>. (2009)<br />
<a href="http://www.amazon.com/exec/obidos/ASIN/0321657292/ref=nosim/advancedcommonse">http://www.amazon.com/exec/obidos/ASIN/0321657292/ref=nosim/advancedcommonse</a><br />
Excellent books, with some of the best advice on low/no-budget usability testing we&#8217;ve seen.</p>
<p>R. Jones, N. Milic-Frayling, K. Rodden, A. Blackwell, &#8220;Contextual Method for the Redesign of Existing Software Products,&#8221; <em>International Journal of Human-Computer Interaction</em>, 2007, 22(1-2). (Original paper dated 2004.)<br />
<a href="http://research.microsoft.com/apps/pubs/default.aspx?id=70095">http://research.microsoft.com/apps/pubs/default.aspx?id=70095</a><br />
Great practical overview of many of the methods described above, courtesy Microsoft Research.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/roles-of-user-experience-design-user-research/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to User Experience (UX) Design</title>
		<link>http://blogs.veracitysolutions.com/introduction-to-user-experience-ux-design/</link>
		<comments>http://blogs.veracitysolutions.com/introduction-to-user-experience-ux-design/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 17:58:33 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[UX Methodology]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=690</guid>
		<description><![CDATA[One of the most sought after aspects of line-of-business development in recent months has been the desire to create not just an application but an experience that appeals to and compels the users of the application. At the same time, there is no aspect of development that is more poorly understood in terms of planning, [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most sought after aspects of line-of-business development in recent months has been the desire to create not just an application but an experience that appeals to and compels the users of the application. At the same time, there is no aspect of development that is more poorly understood in terms of planning, expectations and deliverables than UX design and development.</p>
<p>In this series of blog posts (tagged with UX Methodology), we at Veracity Solutions will try to elucidate how this process works for us.</p>
<p>This post is an effort to clear up some misconceptions about UX design and identify some common terms and roles to expect when doing UX design&#8230; especially within an Agile development environment.</p>
<h2>The 5 Roles of User Experience</h2>
<p>There are five terms that cover the tasks that can be expected in a project implementing effective user experience design. Keep in mind that this does not mean you need a small army to run your UX design initiative. Most UX designers can spearhead more than one of these roles. But it is important to remember that these roles each involve time (also known as money) and each role is important to the process.</p>
<p>Without further ado, the five UX roles are:</p>
<ul>
<li>User Research</li>
<li>Information Architecture (IA)</li>
<li>Interaction Design (IxD)</li>
<li>Visual Design (VisD)</li>
<li>UI Development (UI Dev)</li>
</ul>
<p>For each of these roles, we will cover the following:</p>
<ul>
<li>Definition of the role (what it is, what it’s for, how it’s done)</li>
<li>Deliverable (what do other people on the team see)</li>
<li>Where in the dev process this role take place</li>
<li>Tangible (profitable) benefits</li>
<li>Silverlight/WPF technologies that facilitate this task</li>
</ul>
<p>All of our work is done in using the Agile methodology and a good deal of it is done in Microsoft technologies. As a result, we&#8217;re focusing this series with those two concepts in mind. This doesn&#8217;t mean that people who work in non-Microsoft technologies will be lost at sea. Only that those who do use the Microsoft technologies will find additional information specific to WPF and Silverlight development.</p>
<p>The chart below is quick summary of how these roles fit together. The blocks indicate where the roles take place and the text near the arrows indicate what kind of deliverables come from each role and inform the next role or step in the design or development process. We&#8217;ll highlight how these roles work together in more detail in the coming posts.</p>
<p><a href="http://blogs.veracitysolutions.com/wp-content/uploads/2010/02/AgileSimple.png"><img class="alignnone size-full wp-image-691" src="http://blogs.veracitysolutions.com/wp-content/uploads/2010/02/AgileSimple.png" alt="" width="641" height="284" /></a></p>
<p>For more on UX and Agile, make sure you read the Scott Barnes post <a href="http://www.riagenic.com/archives/225">Can You Mix UX with Agile</a> and Anthony Colfelt&#8217;s <a href="http://www.boxesandarrows.com/view/bringing-user">Bringing User Centered Design to the Agile Environment</a>.</p>
<p>More to come&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/introduction-to-user-experience-ux-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Experience Design Deliverables and Roles from Robby Ingebretsen</title>
		<link>http://blogs.veracitysolutions.com/design-visuals-from-robby-ingebretsen/</link>
		<comments>http://blogs.veracitysolutions.com/design-visuals-from-robby-ingebretsen/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 20:35:57 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=679</guid>
		<description><![CDATA[Here are Veracity, we&#8217;ve spent a not-insignificant amount of time working through an appropriate way to implement user experience design (UX design) into our projects. I have found a huge amount of inspiration from Robby Ingebretsen’s MIX 09 talk on Design Fundamentals for Developers. Watch it. Then watch it again. Then grab the audio and [...]]]></description>
			<content:encoded><![CDATA[<p>Here are Veracity, we&#8217;ve spent a not-insignificant amount of time working through an appropriate way to implement user experience design (UX design) into our projects. I have found a huge amount of inspiration from Robby Ingebretsen’s MIX 09 talk on <a href="http://videos.visitmix.com/MIX09/02W">Design Fundamentals for Developers</a>. Watch it. Then watch it again. Then grab the audio and make it the start-up, shut-down and error sound on your machine. Robby is a fantastic speaker and has thought an enormous amount about user design for software in the real world. Also, <a href="http://blog.nerdplusart.com/">check out Robby’s blog here</a>.</p>
<p>After my third or fourth viewing, I grabbed some of Robby’s helpful visuals so that I wouldn’t have to search through the videos for them. We’ve been using them internally and now, I relay them to you (with his blessings, of course).</p>
<h2>UX Design Deliverables </h2>
<p>Not all of these are formally necessary 100% of the time, but this chart gives a good overview of what kind of deliverables you can expect in a UX process and why they are valuable.</p>
<p>(click to enlarge)</p>
<p><a href="http://www.designersilverlight.com/wp-content/uploads/2009/10/IngebretsenDeliverablesWithPictures1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IngebretsenDeliverablesWithPictures" border="0" alt="IngebretsenDeliverablesWithPictures" src="http://www.designersilverlight.com/wp-content/uploads/2009/10/IngebretsenDeliverablesWithPictures_thumb.png" width="626" height="484" /></a></p>
<h2> User Experience Roles</h2>
<p>Due in part to the newness of user design as a formal discipline, there are many terms used to describe roles and occupations for people involved in creating the user experience. Each of the circles in this diagram is a role, not an individual and it is perfectly reasonable to expect an individual to take on several of these roles (or all of them, if that individual is something of a <a href="http://en.wikipedia.org/wiki/Polymath">polymath</a>). But keep in mind that these roles are distinct and (as an example) you can’t expect to have a superb user experience if you don’t plan out time for your UX designer to do information architecture. </p>
<p>&#160;<a href="http://www.designersilverlight.com/wp-content/uploads/2009/10/IngebretsenVenn.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IngebretsenVenn" border="0" alt="IngebretsenVenn" src="http://www.designersilverlight.com/wp-content/uploads/2009/10/IngebretsenVenn_thumb.png" width="662" height="494" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/design-visuals-from-robby-ingebretsen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Color Image Scale with RGB Values</title>
		<link>http://blogs.veracitysolutions.com/color-image-scale-with-rgb-values/</link>
		<comments>http://blogs.veracitysolutions.com/color-image-scale-with-rgb-values/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 20:54:41 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[Color]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Color Image Scale]]></category>
		<category><![CDATA[Kevin Hale]]></category>
		<category><![CDATA[RGB]]></category>
		<category><![CDATA[Shigenobu Kobayashi]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=674</guid>
		<description><![CDATA[If you’re a designer, you’re almost certainly interested in color. And if you’re interested in color, you could hardly do better than to pick up a copy of Shigenobu Kobayashi’s Color Image Scale. Fellow designer Kevin Hale has some more of the skinny on this fantastic design resource:
This little red book from Japan is written [...]]]></description>
			<content:encoded><![CDATA[<p>If you’re a designer, you’re almost certainly interested in color. And if you’re interested in color, you could hardly do better than to pick up a copy of Shigenobu Kobayashi’s <a href="http://www.amazon.com/gp/product/477001564X?ie=UTF8&amp;tag=irrationalopt-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=477001564X">Color Image Scale</a>. Fellow designer <a href="http://particletree.com/notebook/color-image-scale/">Kevin Hale has some more of the skinny</a> on this fantastic design resource:</p>
<blockquote><p>This little red book from Japan is written by Shigenobu Kobayashi, Japan’s leading color psychologist. Over fifteen years ago, he and his team at the <a href="http://www.ncd-ri.co.jp/english/">Nippon Color &amp; Design Research Institute</a> matched 130 basic colors and over 1,000 color combinations to key image words to help designers express any mood, life-style or taste through color palettes alone.</p>
</blockquote>
<p>Kobayashi’s work is particularly awesome because he categorizes three-color combinations along a “soft-to-hard/warm-to-cool” axis and assigns zones of color that match how we respond to the combinations. </p>
<p>This is only a tiny sample of the color combinations Kobayashi categorizes. </p>
<p><a href="http://www.designersilverlight.com/wp-content/uploads/2009/09/ColorImageScaleImage.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="ColorImageScaleImage" src="http://www.designersilverlight.com/wp-content/uploads/2009/09/ColorImageScaleImage_thumb.png" width="397" height="424" /></a>&#160;</p>
<p>The biggest frustration for me has been the fact that the colors are assigned with a “hue/tone” assignment that I’ve never seen anywhere else. Example: One color is “GY/B”, which is a &quot;green-yellow” hue and a “bright” tone. This is understandable, since Kobayashi wrote the book in 1990… long before a world of web design geeks. But I’ve never found a good resource for translating Kobayashi’s colors into RGB values.</p>
<p>So I made one. </p>
<p>The link below is a recreation of the color guide at the beginning of “Color Image Scale”. I scanned in the pages, color corrected as best I could and found the RGB values for each color. It is obviously not a hard-and-fast guide, but I think it’s a good starting place for figuring out how to directly apply the Color Image Scale to your applications or projects. There is a “small” version that comes in at about 1100 x 900 and a larger version that is 1900&#215;1080. </p>
<p><a href="http://www.designersilverlight.com/wp-content/uploads/2009/09/ColorScaleImageRGB1.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="ColorScaleImageRGB" src="http://www.designersilverlight.com/wp-content/uploads/2009/09/ColorScaleImageRGB_thumb.png" width="244" height="196" /></a>&#160; </p>
<p><a href="http://www.designersilverlight.com/wp-content/uploads/2009/09/ColorImageScaleRGB1080p_thumb1.png">Larger 1080p resolution version of Color Image Scale RGB values</a></p>
<p>Hope that helps anyone who has found Color Images Scale as useful as I have. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/color-image-scale-with-rgb-values/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How To Build a Storyboard Animation for Silverlight in C#</title>
		<link>http://blogs.veracitysolutions.com/how-to-build-a-storyboard-animation-in-c-sharp/</link>
		<comments>http://blogs.veracitysolutions.com/how-to-build-a-storyboard-animation-in-c-sharp/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 17:34:10 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[Advanced Tutorial]]></category>
		<category><![CDATA[How To...]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=667</guid>
		<description><![CDATA[One of the things that I’ve gotten somewhat frustrated in my Silverlight and WPF work is the fact that sometimes (not often, but sometimes), I really need to build a storyboard or keyframe animation programmatically. Especially if you’re doing anything relating to information visualization and you need to create animations for path points, it can [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that I’ve gotten somewhat frustrated in my Silverlight and WPF work is the fact that sometimes (not often, but sometimes), I really need to build a storyboard or keyframe animation programmatically. Especially if you’re doing anything relating to information visualization and you need to create animations for path points, it can be impractical to build a XAML animation and change the values to whatever you need.</p>
<p>By the way, if you need additional help on in depth Silvelright animation, check out Jeff Paries’ excellent <a href="http://www.amazon.com/gp/product/1430215690?ie=UTF8&amp;tag=irrationalopt-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1430215690">Foundation Silverlight 2 Animation</a><img src="http://www.assoc-amazon.com/e/ir?t=irrationalopt-20&amp;l=as2&amp;o=1&amp;a=1430215690" width="1" height="1" border="0" alt="" style="border:none !important;margin:0px !important" />.</p>
<p>In response to this dearth, this is a tutorial on how to create a storyboard in code (specifically C#). Basically, I’m just going to show a XAML animation (which is what I’m used to dealing with because Blend builds them for me) and then show how to create that animation in C#. </p>
<p>This animation will animate the first point in a path to the X,Y coordinate 1,1. </p>
<p>XAML animation:</p>
<p><span style="color: blue">&lt;</span><span style="color: #a31515">Storyboard </span><span style="color: blue">&gt;     <br />&#160;&#160;&#160; &lt;</span><span style="color: #a31515">PointAnimationUsingKeyFrames&#160; <br />&#160;&#160;&#160;&#160;&#160; </span><span style="color: red">BeginTime</span><span style="color: blue">=&quot;00:00:00&quot;&#160; <br />&#160;&#160;&#160;&#160;&#160; </span><span style="color: red">Storyboard.TargetName</span><span style="color: blue">=&quot;myPath&quot;&#160; <br /></span><span style="color: red"><font color="#0000ff">&#160;&#160;&#160;&#160;&#160; </font>Storyboard.TargetProperty</span><span style="color: blue">=&quot;(Path.Data).(PathGeometry.Figures)[0].(PathFigure.Segments)[0].(LineSegment.Point)&quot;&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span style="color: #a31515">EasingPointKeyFrame </span><span style="color: red">KeyTime</span><span style="color: blue">=&quot;00:00:01&quot; </span><span style="color: red">Value</span><span style="color: blue">=&quot;1,1&quot; /&gt;     <br />&#160;&#160;&#160; &lt;/</span><span style="color: #a31515">PointAnimationUsingKeyFrames</span><span style="color: blue">&gt;     <br />&lt;/</span><span style="color: #a31515">Storyboard</span><span style="color: blue">&gt;</span></p>
<p> <a href="http://11011.net/software/vspaste"></a>
<p>C# animation:</p>
<p><span style="color: green">//Code equivalent of: &lt;Storyboard&gt;     <br /></span><span style="color: #2b91af">Storyboard </span>myNewStoryBoard = <span style="color: blue">new </span><span style="color: #2b91af">Storyboard</span>();    </p>
<p><span style="color: green">//Code equivalent of:      <br />//&lt;PointAnimationUsingKeyFrames       <br />//&#160;&#160;&#160; BeginTime=&quot;00:00:00&quot;       <br />//&#160;&#160;&#160; Storyboard.TargetName=&quot;myPath&quot;       <br />//&#160;&#160;&#160; Storyboard.TargetProperty=&quot;(Path.Data).(PathGeometry.Figures)[0].(PathFigure.Segments)[0].(LineSegment.Point)&quot;&gt;      <br /></span><span style="color: #2b91af">PointAnimationUsingKeyFrames </span>myPointAnimation = <span style="color: blue">new </span><span style="color: #2b91af">PointAnimationUsingKeyFrames</span>();    <br />myPointAnimation.BeginTime = <span style="color: blue">new </span><span style="color: #2b91af">TimeSpan</span>(0);    <br /><span style="color: #2b91af">Storyboard</span>.SetTargetName(myPointAnimation, myPath.Name);    <br /><span style="color: #2b91af">Storyboard</span>.SetTarget(myPointAnimation, myPath);    <br /><span style="color: #2b91af">Storyboard</span>.SetTargetProperty(myPointAnimation,    <br />&#160;&#160;&#160; <span style="color: blue">new </span><span style="color: #2b91af">PropertyPath</span>(<span style="color: #a31515">&quot;(Path.Data).(PathGeometry.Figures)[0].(PathFigure.Segments)[0].(LineSegment.Point)&quot;</span>));    </p>
<p><span style="color: green">//Code equivalen of:     <br />// &lt;EasingPointKeyFrame KeyTime=&quot;00:00:01&quot; Value=&quot;1,1&quot; /&gt;      <br /></span><span style="color: #2b91af">EasingPointKeyFrame </span>targetKeyFrame = <span style="color: blue">new </span><span style="color: #2b91af">EasingPointKeyFrame</span>();    <br />targetKeyFrame.KeyTime = <span style="color: #2b91af">KeyTime</span>.FromTimeSpan(<span style="color: #2b91af">TimeSpan</span>.FromMilliseconds(1000));    <br />targetKeyFrame.Value = <span style="color: blue">new </span><span style="color: #2b91af">Point</span>(1, 1);    </p>
<p><span style="color: green">//Add the keyFrame to the animation     <br /></span>myPointAnimation.KeyFrames.Add(targetKeyFrame);    </p>
<p><span style="color: green">//Add the animation to the Storyboard     <br /></span>myNewStoryBoard.Children.Add(myPointAnimation);    </p>
<p><span style="color: green">//Now your storyboard is ready to go&#8230; just start it     <br /></span>myNewStoryBoard.Begin();</p>
<p> <a href="http://11011.net/software/vspaste"></a>
<p>There is not, as far as I know, any way to assign a x:Name property to an object in code. Why? Because if you created the object in code, you should already have a way of accessing it. So the example above is an animation that is looking for a path named “myPath” that is already in the XAML. </p>
<p>If you created your path programmatically (it doesn’t exist in the XAML, but exists in the code), replace this line:</p>
<p><span style="color: #2b91af">Storyboard</span>.SetTargetName(myPointAnimation, myPath.Name);</p>
<p> <a href="http://11011.net/software/vspaste"></a>
<p>with this line.</p>
<p><span style="color: #2b91af">Storyboard</span>.SetTarget(myPointAnimation, myPath);</p>
<p> <a href="http://11011.net/software/vspaste"></a>
<p>where myPath is of type Path and refers to the actual Path you want to animate.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/how-to-build-a-storyboard-animation-in-c-sharp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How To Animate a Changing Property in a Custom Control in Silverlight</title>
		<link>http://blogs.veracitysolutions.com/how-to-animate-a-changing-property-in-a-custom-control-in-silverlight/</link>
		<comments>http://blogs.veracitysolutions.com/how-to-animate-a-changing-property-in-a-custom-control-in-silverlight/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 16:10:44 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[Advanced Tutorial]]></category>
		<category><![CDATA[Custom Controls]]></category>
		<category><![CDATA[How To...]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Custom Control]]></category>
		<category><![CDATA[DependencyProperty]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=661</guid>
		<description><![CDATA[For my recent visualization, I created a custom control in Silverlight that animated the color of a Path every time a “Fill” property on the control was changed. I thought I would pass along my learning from this process.
First thing I learned was that you cannot use TemplateBinding in a Storyboard (I think). I asked [...]]]></description>
			<content:encoded><![CDATA[<p>For my recent visualization, I created a custom control in Silverlight that animated the color of a Path every time a “Fill” property on the control was changed. I thought I would pass along my learning from this process.</p>
<p>First thing I learned was that you cannot use TemplateBinding in a Storyboard (I think). I asked this question on Stack Overflow and I haven’t gotten an answer. But I’m pretty sure that in Silverlight you cannot use TemplateBinding to attach a property to a KeyFrame value. This means that you have to have a pointer in the control code the allows access to the KeyFrame so you can update the value.</p>
<p>I’ll walk through the conceptual part of animating a property in a Custom Control in Sivlerlight and then walk through the code to it.</p>
<p><b>Step 1: Create a PART to your control to hold the Storyboard and a PART to hold the KeyFrame you want to manipulate</b></p>
<p>I cover <a href="http://blogs.veracitysolutions.com/how-to-create-a-part-in-your-silverlight-custom-control/">how to make a PART to your control here</a> because it was too much to put into a single blog post. You&#8217;re going to want to make your Storyboard a PART that is accessed via resources (via MyControlName.Resources[MyStoryboardName]) and your KeyFrame should be a PART that is accessed the normal way (via the GetTemplateChild(MyKeyFrameName) method). </p>
<p> <a href="http://11011.net/software/vspaste"></a>
<p><b>Step 2: Create the DependencyProperty you want to drive the animation</b></p>
<p>Yet another chance for me to endlessly flog <a href="http://blog.nerdplusart.com/archives/silverlight-code-snippets">Robby Ingebretsen’s awesome Silverlight Code Snippets</a>. If you use these, use ‘sldpc’, which is the DependencyProperty with a property changed callback. We want to manually fire the animation when the property changes, so we’re going to do that in the callback.</p>
<p>If you don’t want to use Robby’s stuff, here’s the code for a DependencyProperty with a property changed callback. Because my visualization animates the color, I called my property “Fill”. </p>
<p><span style="color: blue">public </span><span style="color: #2b91af">SolidColorBrush </span>Fill    <br />{    <br />&#160;&#160;&#160; <span style="color: blue">get </span>{ <span style="color: blue">return </span>(<span style="color: #2b91af">SolidColorBrush</span>)GetValue(FillProperty); }    <br />&#160;&#160;&#160; <span style="color: blue">set </span>{ SetValue(FillProperty, <span style="color: blue">value</span>); }    <br />}    </p>
<p><span style="color: blue">public static readonly </span><span style="color: #2b91af">DependencyProperty </span>FillProperty =    <br />&#160;&#160;&#160; <span style="color: #2b91af">DependencyProperty</span>.Register(<span style="color: #a31515">&quot;Fill&quot;</span>, <span style="color: blue">typeof</span>(<span style="color: #2b91af">SolidColorBrush</span>), <span style="color: blue">typeof</span>(<span style="color: #2b91af">County</span>),     <br />&#160;&#160;&#160; <span style="color: blue">new </span><span style="color: #2b91af">PropertyMetadata</span>(<span style="color: blue">new </span><span style="color: #2b91af">SolidColorBrush</span>(<span style="color: #2b91af">Color</span>.FromArgb(0, 0, 0, 0)), <span style="color: blue">new </span><span style="color: #2b91af">PropertyChangedCallback</span>(OnFillChanged)));</p>
<p> <a href="http://11011.net/software/vspaste"></a><a href="http://11011.net/software/vspaste"></a>
<p><b>Step 3: Hook up a property changed callback and run the animation</b></p>
<p>Then, all you need to do is go into the property changed callback that you have created and assign your the new valie of the property to the keyframe value of the animation you want to run. Then run the animation.</p>
<p><span style="color: blue">private static void </span>OnFillChanged(<span style="color: #2b91af">DependencyObject </span>d, <span style="color: #2b91af">DependencyPropertyChangedEventArgs </span>e)    <br />{    <br />&#160;&#160;&#160; <span style="color: #2b91af">MyControlType </span>thisControl = d <span style="color: blue">as </span><span style="color: #2b91af">MyControlType</span>;    <br />&#160;&#160;&#160; <span style="color: blue">if </span>((thisControl != <span style="color: blue">null</span>) &amp;&amp; (thisControl._myStoryboard != <span style="color: blue">null</span>))    <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #2b91af">SolidColorBrush </span>newBrushHolder = (<span style="color: #2b91af">SolidColorBrush</span>)e.NewValue;    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; thisCounty._myKeyFrame.Value = newBrushHolder.Color;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; thisCounty._myStoryboard.Begin();    <br />&#160;&#160;&#160; }    <br />}</p>
<p> <a href="http://11011.net/software/vspaste"></a>
<p>And now every time you change that value in the control, it will animate to the new value. Simple as that. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/how-to-animate-a-changing-property-in-a-custom-control-in-silverlight/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How To Create a PART in Your Silverlight Custom Control</title>
		<link>http://blogs.veracitysolutions.com/how-to-create-a-part-in-your-silverlight-custom-control/</link>
		<comments>http://blogs.veracitysolutions.com/how-to-create-a-part-in-your-silverlight-custom-control/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 16:06:22 +0000</pubDate>
		<dc:creator>Matthias Shapiro</dc:creator>
				<category><![CDATA[Advanced Tutorial]]></category>
		<category><![CDATA[Custom Controls]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[Custom Control]]></category>
		<category><![CDATA[PART]]></category>

		<guid isPermaLink="false">http://blogs.veracitysolutions.com/?p=656</guid>
		<description><![CDATA[There are about a dozen videos and tutorials on how to create a custom control in Silverlight 3. (Here’s my favorite, from Karen Corby. Skip to about 47 minutes for the tutorial part.)
But sometimes, you (and by “you”, I mean me) need help figuring out how to create a PART for a control because, let’s [...]]]></description>
			<content:encoded><![CDATA[<p>There are about a dozen videos and tutorials on how to create a custom control in Silverlight 3. (<a href="http://scorbs.com/2009/03/23/mix-09-building-microsoft-silverlight-controls/">Here’s my favorite, from Karen Corby</a>. Skip to about 47 minutes for the tutorial part.)</p>
<p>But sometimes, you (and by “you”, I mean me) need help figuring out how to create a PART for a control because, let’s be honest, you don’t do it all the time and no one has a blog post on just this little part of control building.</p>
<p>If you’re wondering what a PART is, here’s a short explanation: A PART is a naming convention that allows a control (code) to make a contract with the control template (XAML) in Silverlight. The control says to the template, “I’m going to be doing something programmatic with this part, so it better be there”. The template responds, “Here’s that part you wanted.”</p>
<p>I not actually talking down to anyone, this is really how my brain works. </p>
<p>There are basically five steps in creating a PART. I think you can actually do it in less, but I’m trying to follow what I think is proper coding practice. In this tutorial, we’re going create parts out of a Button and also a Storyboard (partly because there are different ways to assign a PART if it is in located in the control resources like a Storyboard is).</p>
<p><b>Step 1: Define the control template parts you’ll need</b></p>
<p>Outside of the control class we need to add the TemplatePart attributes. Inside the class, we need to define the names of the UI objects we’re going to turn into parts as well as create some corresponding objects in the control so we can access those PARTs.</p>
<p>[<span style="color: #2b91af">TemplatePart</span>(Name = <span style="color: #2b91af">MyControl</span>.StoryboardString, Type = <span style="color: blue">typeof</span>(<span style="color: #2b91af">Storyboard</span>))]    <br />[<span style="color: #2b91af">TemplatePart</span>(Name = <span style="color: #2b91af">MyControl</span>.RootElementString, Type = <span style="color: blue">typeof</span>(<span style="color: #2b91af">FrameworkElement</span>))]    <br />[<span style="color: #2b91af">TemplatePart</span>(Name = <span style="color: #2b91af">MyControl</span>.ButtonString, Type = <span style="color: blue">typeof</span>(<span style="color: #2b91af">Button</span>))]    </p>
<p><span style="color: blue">public class </span><span style="color: #2b91af">MyControl </span>: <span style="color: #2b91af">Control     <br /></span>{    <br />&#160;&#160;&#160; <span style="color: blue">private const string </span>StoryboardString = <span style="color: #a31515">&quot;PART_MyStoryboard&quot;</span>;    <br />&#160;&#160;&#160; <span style="color: blue">private const string </span>RootElementString = <span style="color: #a31515">&quot;PART_RootElement&quot;</span>;&#160; <br />&#160;&#160;&#160; <span style="color: blue">private const string </span>ButtonString = <span style="color: #a31515">&quot;PART_MyButton&quot;</span>;</p>
<p>&#160;&#160;&#160; <span style="color: blue">private </span><span style="color: #2b91af">Storyboard </span>_targetStoryboard;    <br /><span style="color: blue">&#160;&#160;&#160; private </span><span style="color: #2b91af">FrameworkElement </span>_rootElement;    <br /><span style="color: blue">&#160;&#160;&#160; private </span><span style="color: #2b91af">Button </span>_targetButton;<a href="http://11011.net/software/vspaste"></a></p>
<p>What we’re going to do here is remarkably stupid because I don’t have the creativity right now to do something cool. When we press the button, we’ll play the storyboard. We need the RootElement because… you’ll see in a moment. </p>
<p><b>Step 2: Make sure you have a XAML template properly named to correspond with the part</b></p>
<p>We have three parts we’re getting here, so this is a stripped down template that just has the three PARTs named appropriately. If the names are not the same as the strings above, it will not work.</p>
<p><span style="color: blue">&lt;</span><span style="color: #a31515">Style</span><span style="color: red">TargetType</span><span style="color: blue">=&quot;local:MyControl&quot;&gt;     <br />&#160;&#160;&#160; &lt;</span><span style="color: #a31515">Setter</span><span style="color: red">Property</span><span style="color: blue">=&quot;Template&quot;&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span style="color: #a31515">ControlTemplate </span><span style="color: red">TargetType</span><span style="color: blue">=&quot;local:MyControl&quot;&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span style="color: #a31515">Grid </span><span style="color: red">x</span><span style="color: blue">:</span><span style="color: red">Name</span><span style="color: blue">=&quot;PART_RootElement&quot;&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span style="color: #a31515">Grid.Resources</span><span style="color: blue">&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span style="color: #a31515">Storyboard </span><span style="color: red">x</span><span style="color: blue">:</span><span style="color: red">Name</span><span style="color: blue">=&quot;PART_MyStoryboard&quot;&gt;     <br />&#160;&#160;&#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="color: green">&lt;!&#8211; Whatever animations you want here &#8211;&gt;     <br />&#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="color: blue">&lt;/</span><span style="color: #a31515">Storyboard</span><span style="color: blue">&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</span><span style="color: #a31515">Grid.Resources</span><span style="color: blue">&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;</span><span style="color: #a31515">Button </span><span style="color: red">x</span><span style="color: blue">:</span><span style="color: red">Name</span><span style="color: blue">=&quot;PART_MyButton&quot; /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</span><span style="color: #a31515">Grid</span><span style="color: blue">&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</span><span style="color: #a31515">ControlTemplate</span><span style="color: blue">&gt;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/</span><span style="color: #a31515">Setter.Value</span><span style="color: blue">&gt;     <br />&#160;&#160;&#160; &lt;/</span><span style="color: #a31515">Setter</span><span style="color: blue">&gt;     <br />&lt;/</span><span style="color: #a31515">Style</span><span style="color: blue">&gt;</span></p>
<p> <a href="http://11011.net/software/vspaste"></a><a href="http://11011.net/software/vspaste"></a>
<p><b>Step 3: Assign the XAML PART to the code PART in the OnApplyTemplate method</b></p>
<p>Now we just have to write a custom OnApplyTemplate method that will grab the XAML elements and assign them to objejcts within the control code. There are two key methods you’ll use. The first is GetTemplateChild, which will pull out any UI element in the XAML that is named and not in the resources. </p>
<p>If you want to get something in the resources, you need to refer to the UI element that holds those resources. This is why we needed the root element as a PART. So, enough of my blabbing… here’s the code:</p>
<p><span style="color: blue">public override void </span>OnApplyTemplate()    <br />{    <br />&#160;&#160;&#160; <span style="color: blue">base</span>.OnApplyTemplate();    </p>
<p>&#160;&#160;&#160; _rootElement = GetTemplateChild(<span style="color: #2b91af">MyControl</span>.RootElementString) <span style="color: blue">as </span><span style="color: #2b91af">FrameworkElement</span>;    <br />&#160;&#160;&#160; <span style="color: green">//Make sure we actually got the template applied.     <br />&#160;&#160;&#160; </span><span style="color: blue">if </span>(_rootElement != <span style="color: blue">null</span>)    <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; _targetStoryboard = _rootElement.Resources[<span style="color: #2b91af">MyControl</span>.StoryboardString] <span style="color: blue">as </span><span style="color: #2b91af">Storyboard</span>;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; _targetButton = GetTemplateChild(<span style="color: #2b91af">MyControl</span>.ButtonString) <span style="color: blue">as </span><span style="color: #2b91af">Button</span>;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; _targetButton.Click +=<span style="color: blue">new </span><span style="color: #2b91af">RoutedEventHandler</span>(_targetButton_Click);&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p>
<p>&#160;&#160;&#160; }    <br />}</p>
<p> <a href="http://11011.net/software/vspaste"></a><a href="http://11011.net/software/vspaste"></a>
<p>Now we have all the PARTs assigned so we can do something like adding an event handler to the Button so that, when it is clicked, it runs the storyboard.</p>
<p><span style="color: blue">void&#160; </span>_targetButton_Click(<span style="color: blue">object</span>sender, <span style="color: #2b91af">RoutedEventArgs </span>e)    <br />{    <br />&#160;&#160;&#160;&#160; _targetStoryboard.Begin();    <br />}</p>
<p> <a href="http://11011.net/software/vspaste"></a>
<p>And that’s how you add a PART… both in the regular XAML template and in the resources of the template.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.veracitysolutions.com/how-to-create-a-part-in-your-silverlight-custom-control/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
