<?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>Orbifold &#187; WPF</title>
	<atom:link href="http://visualizationtools.net/default/tag/wpf/feed/" rel="self" type="application/rss+xml" />
	<link>http://visualizationtools.net/default</link>
	<description>Think. Visualize. Understand.</description>
	<lastBuildDate>Wed, 18 Jan 2012 09:08:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>L2, iSee, Silverlight Property Grid and S#</title>
		<link>http://visualizationtools.net/default/l2-isee-silverlight-property-grid-and-s/</link>
		<comments>http://visualizationtools.net/default/l2-isee-silverlight-property-grid-and-s/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 19:38:08 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[Diagramming]]></category>
		<category><![CDATA[Property Grid]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=2438</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.orbifold.net/default/wp-content/uploads/L2FirstShot.PNG"><img class="alignleft size-large wp-image-2410" title="L2 Screenshot" src="http://www.orbifold.net/default/wp-content/uploads/L2FirstShot-1024x905.PNG" alt="L2 Screenshot" width="352" height="310" /></a></p>
<p><span style="color: #666699; font-size: 30pt;">L2 </span>G2 is our biggest product and has been used by companies to create &#8216;big&#8217; applications in diverse markets. Because it is based on Unity for dependency injection and because Microsoft waited quite a while to release a Silverlight analog, it took a while to create a Silverlight analog of G2. We baptised it &#8216;L2&#8242;. Of course we could have used alternative injection libraries (many have popped up this year in fact) but we wanted to stay as parallel as possible to G2 in order to enable our customers to move with ease between G2 and L2. So, it&#8217;s there and you can<a title="L2 demo" href="/L2/demo" target="_self"> test it online here</a>. It&#8217;s still in beta and we welcome any feedback. You can also download the code and the core library, see<a title="L2 product page" href="/L2" target="_self"> the L2 product page</a> for more.</p>
<p><span style="color: #666699; font-size: 30pt;">S#</span>scripting library. This little jewel allows you in effect to alter an application at runtime much like macro&#8217;s. In fact, you can compare it to VBA in office except that our S# library will work in any .Net context (<strong>including XNA, Silverlight, WPF and WinForms</strong>). I will talk about S# more later this week in another blog posting and Denis Vuyka will also publish soon more information regarding S# and, another kid on the stage; <strong>Processing#</strong>.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/isee3.PNG"><img class="alignright size-medium wp-image-2425" title="isee 3" src="http://www.orbifold.net/default/wp-content/uploads/isee3-300x292.PNG" alt="isee 3" width="201" height="196" /></a><span style="color: #666699; font-size: 30pt;">iSee!</span> In addition to this we have been experimenting with novel approaches to diagramming and how to take full advantge of Silverlight and WPF animation capabilities. This lab project which has been now already for one year in the back of our minds is ready to be tested as well. Head over to <a title="iSee demo" href="/iSee/demo" target="_self">our iSee demo</a> and let us know what you think. iSee is all about animating visual elements and you can apply it anything which inherits from the FrameworkElement base class, that is&#8230;as good as anything you&#8217;ll find in WPF and Silverlight. Furthermore, iSee is really easy to use. It boast a<strong> fluent API</strong> and a very intuitive series of methods. The fluent things means you can chain actions ad infinitum.</p>
<p>For example, the following line of code:</p>
<pre>Attach(image, true).Scale(3, 3, Duration.Automatic)
.Move(new Point(145,150)).Scale(0.3, 0.3, Duration.Automatic).Play();</pre>
<p>will attach a given image to a canvas, scale it with a factor of three, subsequently move the image to another location and un-scale it to the original proportions. Easy! It would take a substantial amount of work to code this in C# or to create an equivalen storyboard in Expression Blend.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/isee4.PNG"><img class="size-medium wp-image-2426 alignleft" title="isee 4" src="http://www.orbifold.net/default/wp-content/uploads/isee4-300x261.PNG" alt="isee 4" width="237" height="206" /></a>We also wanted to enable certain diagramming scenario&#8217;s and have integrated diverse methods which allow you to create diagrams, mindmaps and data visualization with just a few methods. In the demo you will see a few examples of this.</p>
<p><span style="color: #666699; font-size: 30pt;">SPG</span>Last but not least, I&#8217;m also proud to announce our new Silverlight property grid. Much like L2 is an analog of G2, so is the Silverlight property grid (we call it &#8216;SPG&#8217;) an analof of our WPF property grid (&#8216;WPG&#8217;). You can <a title="SPF on Denis' blog" href="http://denisvuyka.wordpress.com/2009/10/31/silverlight-3-propertygrid-development-progress/" target="_blank">read about it on Denis&#8217; blog</a> and watch this space for more in the next few weeks.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/spg01.png"><img class="alignright size-medium wp-image-2445" title="SPG" src="http://www.orbifold.net/default/wp-content/uploads/spg01-268x300.png" alt="SPG" width="189" height="212" /></a>All these products represent a considerable amount of work (testing, demo versions, docs, samples&#8230;) and we are still in the process of packaging them. Also, for prices and official releases you&#8217;ll have to wait a bit, we&#8217;re working on it. Meanwhile let us know what you think. The Silverlight market is booming these days and there are excellent products around, still we think that our set of products fill a gap and represent a unique spectrum of solutions you&#8217;ll not find elsewhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/l2-isee-silverlight-property-grid-and-s/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Beyond mapping: highlighting one of our G2 customization projects</title>
		<link>http://visualizationtools.net/default/beyond-mapping-highlighting-one-of-our-g2-customization-projects/</link>
		<comments>http://visualizationtools.net/default/beyond-mapping-highlighting-one-of-our-g2-customization-projects/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 05:18:35 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[WPF]]></category>
		<category><![CDATA[G2]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=2386</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.orbifold.net/default/wp-content/uploads/CWISModsSystem.png"><img class="size-full wp-image-2391 alignleft" title="CWIS Diagramming System" src="http://www.orbifold.net/default/wp-content/uploads/CWISModsSystem.png" alt="CWIS Diagramming System" width="372" height="311" /></a>Today I&#8217;m on my way to <a title="See in Google Maps" href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=nl&amp;geocode=&amp;q=Lausanne,+Zwitserland&amp;sll=37.0625,-95.677068&amp;sspn=51.887315,114.169922&amp;ie=UTF8&amp;z=12&amp;iwloc=A" target="_blank">Lausanne </a>(Switserland) visiting a customer with whom I&#8217;ve been working during the past half year on an information system which combines multiple views and data sources (geographical, data backends, diagrams&#8230;). The application is <strong>intriguing </strong>both in its scope and in the technological ideas it boasts. In fact, it demonstrates <strong>very innovative approaches</strong> to display much information and many widgets in a constraint amount ofÂ  UI. The purpose of the whole project is to have a combined water information (inventarizaton) system which allows one to gain insights via an integrated system model approach, combining <a title="Geographic information system" href="http://en.wikipedia.org/wiki/Geographic_information_system" target="_blank">GIS</a>, intelligent diagrams, custom reports and indicators. Let me highlight a few of the more salient features:</p>
<ul>
<li>the application is <strong>fully WPF</strong> and uses the <strong>composite application block</strong> to combine multiple modules</li>
<li>the <strong>customizable reporting engine</strong> is quite unique and allows one to create reports at runtime by simple dragdrop. The fact that it&#8217;s home-made is astonishing.</li>
<li>the <strong>integrated diagram view is based on our own G2 library</strong> and allows a user to create or visualize relationships between hostorical events, geographic data and evidence data</li>
<li>the docking environment contains <strong>a wild amount of sliding panels and windows</strong> which at first can be daunting to understand and manage but in the end feel very natural and speed up the access to the many views of functions of the application</li>
<li>the backend is based on WCF and the data access layer is generated via LLBLGen. Did you know <a title="Netron in LLBLGen" href="http://www.llblgen.com/pages/about.aspx" target="_blank">LLBLGen uses Netron</a> for its diagramming needs?</li>
<li>the <strong>indicator module</strong> is just like the reporting moduleÂ  home-made stuff. Both modules would for sure be very useful outside their current application boundaries and it&#8217;s somewhat sad to see so much great stuff hidden in a niche application while it could go way beyond it. Who knows how much great WPF stuff is out there in internal enterprise applications?</li>
</ul>
<p>While the whole project is related to a particular subject (water, floods, lakes, dams, irrigation, rivers, rain&#8230;) it would work with many other subjects; production chains, ERP systems, food production systems etc. The diagramming part in particular would work well outside its current domain. The many customizations of <a title="About G2" href="/G2" target="_blank">G2 </a>in function of this project has turned the core into a data visualization control while retaining the many features it already had. It shows in effect <strong>how G2 can be adapted with ease to embrace all sorts of project requirements</strong>.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/CwisModsArt.png"><img class="size-full wp-image-2388 alignright" title="Cwis report" src="http://www.orbifold.net/default/wp-content/uploads/CwisModsArt.png" alt="Cwis report" width="372" height="305" /></a></p>
<p>It&#8217;s sometimes <strong>tough not to blog about the projects we work on</strong> because often customers want to keep their own developments hidden (many reasons are playing here&#8230;). I wish I could tell you about how our diagramming stuff is used together with <a title="The Surface" href="http://www.microsoft.com/surface/" target="_blank">Microsoft Surface</a> to boast a compelling experience, how it&#8217;s used <strong>inside Microsoft Dynamics to visualize CRM</strong> relationships, how it&#8217;s <strong>used in Sharepoint </strong>to create an holistic view on information, how&#8230;but sorry I&#8217;m not allowed <img src='http://visualizationtools.net/default/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  So, I&#8217;m glad that (for once) I was allowed to say a few words about this project. Go and have a look at<a title="Beyond mapping" href="http://www.b-map.ch/?page_id=6" target="_blank"> the project&#8217;s website</a> where additional info can be found.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/CWISModsGeo.png"><img class="alignnone size-full wp-image-2389" title="CWIS Geo module" src="http://www.orbifold.net/default/wp-content/uploads/CWISModsGeo.png" alt="CWIS Geo module" width="387" height="338" /></a><a href="http://www.orbifold.net/default/wp-content/uploads/CWISModsMenu.png"><img class="alignnone size-full wp-image-2390" title="CWIS Intelligent Menu" src="http://www.orbifold.net/default/wp-content/uploads/CWISModsMenu.png" alt="CWIS Intelligent Menu" width="118" height="336" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/beyond-mapping-highlighting-one-of-our-g2-customization-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expression Blend&#039;s Sketchflow diagrams with G2</title>
		<link>http://visualizationtools.net/default/expression-blends-sketchflow-diagrams-with-g2/</link>
		<comments>http://visualizationtools.net/default/expression-blends-sketchflow-diagrams-with-g2/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 12:12:05 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[Diverse]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Diagramming]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=2338</guid>
		<description><![CDATA[A short sample demonstrating that it's a piece of cake to mimic the latest Expression Blend diagrams (part of Sketchflow) in G2.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.orbifold.net/default/wp-content/uploads/BlendSketchflow.png"><img class="size-thumbnail wp-image-2339 alignleft" title="Expression Blend 3 with Sketchflow" src="http://www.orbifold.net/default/wp-content/uploads/BlendSketchflow-150x150.png" alt="Expression Blend 3 with Sketchflow" width="150" height="150" /></a>One of the aims of G2 is to provide a framework for any type of intelligent diagram (see also <a href="/default/?p=1764">the database diagram sample</a>, <a href="/default/?p=1773">the mindmapping sample</a>, <a href="/default/?p=1735">the class diagram sample</a>&#8230;). The &#8216;intelligent&#8217; refers here to highly interactive diagrams with databinding, animations and adorners in constrast with &#8216;data visualization&#8217; diagrams where the focus is more on getting a bird&#8217;s eye view (many nodes and edges) on the data rather than seeing all the details to the lowest level.</p>
<p>In the past week I had a look at Expression Blend 3 and was impressed with the amount of new features both for WPF and Silverlight. The application is a delight! I&#8217;m not so sure that <a title="Expression Sketchflow" href="http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx" target="_blank">Sketchflow </a>(see screenshot on the left in case you have no idea what it&#8217;s all about) will replace paper and pencil but it does offer a new approach which might suit some workflows in companies. In any case, I was seduced by the diagrammatic representation of the screen-flow which allows you to visualize/change and beautify (screen transitions etc.) the flow of the various WPF/Silverlight forms you hook up together. Obviously it came to my mind to mimic it in G2 and&#8230;presto, I had it done in the course of an evening. The most difficult part in the process was actually not the diagramming bit but the definition of the shifting tray which shows up when one hovers over the nodes. The situation is very common and with customers we always have this kind of discussion: the gizmo&#8217;s and bells should be shown at all time or is usability increased by popups, sliding panels and expanding trays? Expression Blend is in this context different from other Microsoft application where usually the buttons and gears are fixed (cfr. class designer, SQL designer, DSL designers etc.). Well, this is not a bad things since Expression is aimed at designers and people who are looking for cool effects. In fact, WPF and Silverlight offer much effcts and sparkles which are hardly used in line of business applications nowadays. Personally, I continue to be amazed how much one can achieve with WPF (and G2) without much programming and this little sketchflow proof of concept on the basis of G2 was huge fun.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/G2SketchflowSample.png"><img src="http://www.orbifold.net/default/wp-content/uploads/G2SketchflowSample.png" alt="G2 Sketchflow Sample" title="G2 Sketchflow Sample" width="612" height="518" class="alignnone size-full wp-image-2360" /></a><br />
<span id="more-2338"></span><br />
Below is a short sequence demonstrating the sample. Sorry for not delivering the sample code, <a title="G2" href="/G2">G2 is a commercial component </a>(see however the control template below for an idea of what it involves). If you buy G2 the sample comes with the box together with many other (and ever growing set of) samples.</p>
<p><object id="movie" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="576" height="452" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="bgcolor" value="#4A4A4A" /><param name="allowScriptAccess" value="always" /><param name="src" value="/Default/wp-content/uploads/SketchflowWithG2.swf" /><param name="name" value="movie" /><embed id="movie" type="application/x-shockwave-flash" width="576" height="452" src="/Default/wp-content/uploads/SketchflowWithG2.swf" name="movie" allowscriptaccess="always" bgcolor="#4A4A4A" quality="high"></embed></object></p>
<div class="wp_codebox">
<table>
<tr id="p23381">
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
</pre>
</td>
<td class="code" id="p2338code1">
<pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style</span> <span style="color: #000066;">TargetType</span>=<span style="color: #ff0000;">&quot;{x:Type Sketchflow:SketchFlowShape}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;MinWidth&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;130&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;MinHeight&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;25&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Background&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;Blue&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Foreground&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;White&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;SnapsToDevicePixels&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;True&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Template&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;setter</span> .Value<span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;controltemplate</span> <span style="color: #000066;">TargetType</span>=<span style="color: #ff0000;">&quot;{x:Type Sketchflow:SketchFlowShape}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/controltemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;controltemplate</span> .Resources<span style="color: #000000; font-weight: bold;">&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;storyboard</span> <span style="color: #000066;">x:Key</span>=<span style="color: #ff0000;">&quot;SBExpand&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doubleanimationusingkeyframes</span> <span style="color: #000066;">BeginTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Storyboard.TargetName</span>=<span style="color: #ff0000;">&quot;tray&quot;</span> <span style="color: #000066;">Storyboard.TargetProperty</span>=<span style="color: #ff0000;">&quot;(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:01&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;20&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/doubleanimationusingkeyframes<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doubleanimationusingkeyframes</span> <span style="color: #000066;">BeginTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Storyboard.TargetName</span>=<span style="color: #ff0000;">&quot;tray&quot;</span> <span style="color: #000066;">Storyboard.TargetProperty</span>=<span style="color: #ff0000;">&quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">KeySpline</span>=<span style="color: #ff0000;">&quot;0,0,0.625,1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:01&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;20&quot;</span> <span style="color: #000066;">KeySpline</span>=<span style="color: #ff0000;">&quot;0.11,0.99,1,1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/doubleanimationusingkeyframes<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/storyboard<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;storyboard</span> <span style="color: #000066;">x:Key</span>=<span style="color: #ff0000;">&quot;SBCollapse&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doubleanimationusingkeyframes</span> <span style="color: #000066;">BeginTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Storyboard.TargetName</span>=<span style="color: #ff0000;">&quot;tray&quot;</span> <span style="color: #000066;">Storyboard.TargetProperty</span>=<span style="color: #ff0000;">&quot;(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:01&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;20&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/doubleanimationusingkeyframes<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doubleanimationusingkeyframes</span> <span style="color: #000066;">BeginTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Storyboard.TargetName</span>=<span style="color: #ff0000;">&quot;tray&quot;</span> <span style="color: #000066;">Storyboard.TargetProperty</span>=<span style="color: #ff0000;">&quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:00&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;20&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;splinedoublekeyframe</span> <span style="color: #000066;">KeyTime</span>=<span style="color: #ff0000;">&quot;00:00:01&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">KeySpline</span>=<span style="color: #ff0000;">&quot;0.08,1,1,1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/doubleanimationusingkeyframes<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/storyboard<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;objectdataprovider</span> <span style="color: #000066;">x:Key</span>=<span style="color: #ff0000;">&quot;Tags&quot;</span> <span style="color: #000066;">ObjectType</span>=<span style="color: #ff0000;">&quot;{x:Type Sketchflow:Stuff}&quot;</span> <span style="color: #000066;">MethodName</span>=<span style="color: #ff0000;">&quot;get_VisualTags&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style</span> <span style="color: #000066;">x:Key</span>=<span style="color: #ff0000;">&quot;TagButton&quot;</span> <span style="color: #000066;">TargetType</span>=<span style="color: #ff0000;">&quot;{x:Type Button}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Background&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;Transparent&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Button.Command&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;{x:Static Sketchflow:Window1.ChangeBackgroundCommand}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Button.CommandParameter&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;{Binding}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Button.Cursor&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;Hand&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Template&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;setter</span> .Value<span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;controltemplate</span> <span style="color: #000066;">TargetType</span>=<span style="color: #ff0000;">&quot;{x:Type Button}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;stackpanel</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;line&quot;</span> <span style="color: #000066;">Orientation</span>=<span style="color: #ff0000;">&quot;Horizontal&quot;</span> <span style="color: #000066;">Background</span>=<span style="color: #ff0000;">&quot;{TemplateBinding Background}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rectangle</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;5&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;5&quot;</span> <span style="color: #000066;">Fill</span>=<span style="color: #ff0000;">&quot;{Binding Color}&quot;</span> <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Center&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;5,3,0,0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;textblock</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">&quot;{Binding Title}&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Stretch&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;7,0,0,0&quot;</span> <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Stretch&quot;</span> <span style="color: #000066;">SnapsToDevicePixels</span>=<span style="color: #ff0000;">&quot;{TemplateBinding SnapsToDevicePixels}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/stackpanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/controltemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;controltemplate</span> .Triggers<span style="color: #000000; font-weight: bold;">&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;trigger</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;IsMouseOver&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;True&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Background&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;Silver&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/trigger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/controltemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/controltemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;FontSize&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;10&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Foreground&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;White&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;datatemplate</span> <span style="color: #000066;">x:Key</span>=<span style="color: #ff0000;">&quot;TagTemplate&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;button</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;-2,0,0,0&quot;</span> <span style="color: #000066;">Style</span>=<span style="color: #ff0000;">&quot;{DynamicResource TagButton}&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;79.5&quot;</span> <span style="color: #000066;">Content</span>=<span style="color: #ff0000;">&quot;{Binding }&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/datatemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;grid</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;PART_maingrid&quot;</span> <span style="color: #000066;">DataContext</span>=<span style="color: #ff0000;">&quot;{Binding RelativeSource={RelativeSource TemplatedParent}}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;border</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;tray&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;8,0,0,1.046&quot;</span> <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Bottom&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;20&quot;</span> <span style="color: #000066;">BorderBrush</span>=<span style="color: #ff0000;">&quot;{TemplateBinding Background}&quot;</span> <span style="color: #000066;">BorderThickness</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">CornerRadius</span>=<span style="color: #ff0000;">&quot;0,0,5,5&quot;</span> <span style="color: #000066;">Background</span>=<span style="color: #ff0000;">&quot;#FF333333&quot;</span> <span style="color: #000066;">RenderTransformOrigin</span>=<span style="color: #ff0000;">&quot;0.5,0&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;83.737&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Left&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/border<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;border</span> .RenderTransform<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;transformgroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scaletransform</span> <span style="color: #000066;">ScaleX</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">ScaleY</span>=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;skewtransform</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rotatetransform</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;translatetransform</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/transformgroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/border<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/grid<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;grid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/grid<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;grid</span> .RowDefinitions<span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rowdefinition</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;Auto&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/grid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;grid</span> .ColumnDefinitions<span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;columndefinition</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;columndefinition</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;Auto&quot;</span> <span style="color: #000066;">MinWidth</span>=<span style="color: #ff0000;">&quot;17.053&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/grid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;stackpanel</span> <span style="color: #000066;">Orientation</span>=<span style="color: #ff0000;">&quot;Horizontal&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Left&quot;</span> <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Center&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;0,3,0,0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;popup</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;TagPop&quot;</span> <span style="color: #000066;">AllowsTransparency</span>=<span style="color: #ff0000;">&quot;True&quot;</span>   <span style="color: #000066;">PopupAnimation</span>=<span style="color: #ff0000;">&quot;Slide&quot;</span>       <span style="color: #000066;">HorizontalOffset</span>=<span style="color: #ff0000;">&quot;0&quot;</span>  <span style="color: #000066;">VerticalOffset</span>=<span style="color: #ff0000;">&quot;-112&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;border</span> <span style="color: #000066;">Background</span>=<span style="color: #ff0000;">&quot;#FF333333&quot;</span> <span style="color: #000066;">CornerRadius</span>=<span style="color: #ff0000;">&quot;3&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Left&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;84&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;111&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listbox</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;TagList&quot;</span> <span style="color: #000066;">ItemsSource</span>=<span style="color: #ff0000;">&quot;{Binding Source={StaticResource Tags}}&quot;</span>  <span style="color: #000066;">SelectedIndex</span>=<span style="color: #ff0000;">&quot;-1&quot;</span> <span style="color: #000066;">ItemTemplate</span>=<span style="color: #ff0000;">&quot;{DynamicResource TagTemplate}&quot;</span> <span style="color: #000066;">Background</span>=<span style="color: #ff0000;">&quot;{x:Null}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/border<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/popup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #808080; font-style: italic;">&lt;!--&lt;image Source=&quot;Images/ConnectExistingScreen.png&quot; Width=&quot;12&quot; Height=&quot;12&quot; HorizontalAlignment=&quot;Left&quot; VerticalAlignment=&quot;Center&quot; Margin=&quot;5,0,0,0&quot;/&gt;--&gt;</span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;button</span> <span style="color: #000066;">Style</span>=<span style="color: #ff0000;">&quot;{StaticResource ConnectNewScreen}&quot;</span> <span style="color: #000066;">DataContext</span>=<span style="color: #ff0000;">&quot;{Binding RelativeSource={RelativeSource TemplatedParent}}&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;12&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;12&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Left&quot;</span> <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Center&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;5,0,0,0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;image</span> <span style="color: #000066;">Source</span>=<span style="color: #ff0000;">&quot;Images/ConnectNewScreen.png&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;12&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;12&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Left&quot;</span> <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Center&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;5,0,0,0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;image</span> <span style="color: #000066;">Source</span>=<span style="color: #ff0000;">&quot;Images/InsertComponentScreen.png&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;12&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;12&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Left&quot;</span> <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Center&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;5,0,0,0&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/stackpanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
              <span style="color: #808080; font-style: italic;">&lt;!--&lt;image Source=&quot;Images/ChangeVisualTag.png&quot; Width=&quot;Auto&quot; Height=&quot;12&quot; Grid.Column=&quot;1&quot; Margin=&quot;0.872,3,5,0&quot; HorizontalAlignment=&quot;Stretch&quot;/&gt;--&gt;</span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;button</span> <span style="color: #000066;">Style</span>=<span style="color: #ff0000;">&quot;{StaticResource ChangeVisualTag}&quot;</span> <span style="color: #000066;">DataContext</span>=<span style="color: #ff0000;">&quot;{Binding RelativeSource={RelativeSource TemplatedParent}}&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;Auto&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;12&quot;</span> <span style="color: #000066;">Grid.Column</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;0.872,3,5,0&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Stretch&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
&nbsp;
&nbsp;
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rectangle</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;PART_rec&quot;</span> <span style="color: #000066;">RadiusX</span>=<span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #000066;">RadiusY</span>=<span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #000066;">Stroke</span>=<span style="color: #ff0000;">&quot;{x:Null}&quot;</span>  <span style="color: #000066;">StrokeThickness</span>=<span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;{TemplateBinding Width}&quot;</span> <span style="color: #000066;">Fill</span>=<span style="color: #ff0000;">&quot;{TemplateBinding Background}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;textblock</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">&quot;{TemplateBinding ContentControl.Content}&quot;</span>  <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Center&quot;</span></span>
<span style="color: #009900;">                         <span style="color: #000066;">VerticalAlignment</span>=<span style="color: #ff0000;">&quot;Center&quot;</span> <span style="color: #000066;">Foreground</span>=<span style="color: #ff0000;">&quot;White&quot;</span> <span style="color: #000066;">FontWeight</span>=<span style="color: #ff0000;">&quot;Bold&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #808080; font-style: italic;">&lt;!-- PART_DragThumb --&gt;</span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;core</span> :TranslationThumb <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;PART_DragThumb&quot;</span> <span style="color: #000066;">Cursor</span>=<span style="color: #ff0000;">&quot;SizeAll&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #808080; font-style: italic;">&lt;!-- PART_ConnectorDecorator --&gt;</span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;core</span> :ConnectorDecorator <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;PART_ConnectorDecorator&quot;</span></span>
<span style="color: #009900;">                       <span style="color: #000066;">Visibility</span>=<span style="color: #ff0000;">&quot;Hidden&quot;</span></span>
<span style="color: #009900;">                       <span style="color: #000066;">Template</span>=<span style="color: #ff0000;">&quot;{StaticResource ConnectorDecoratorTemplate}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rectangle</span> <span style="color: #000066;">x:Name</span>=<span style="color: #ff0000;">&quot;Arrow&quot;</span> <span style="color: #000066;">Visibility</span>=<span style="color: #ff0000;">&quot;{TemplateBinding ShowArrow, Converter={StaticResource BoolToVisibilityConverter} }&quot;</span>  <span style="color: #000066;">Stroke</span>=<span style="color: #ff0000;">&quot;{x:Null}&quot;</span> <span style="color: #000066;">HorizontalAlignment</span>=<span style="color: #ff0000;">&quot;Left&quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;21&quot;</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;21&quot;</span> <span style="color: #000066;">Fill</span>=<span style="color: #ff0000;">&quot;{DynamicResource LitlArrow}&quot;</span> <span style="color: #000066;">Margin</span>=<span style="color: #ff0000;">&quot;-7,0,0,14&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;controltemplate</span> .Triggers<span style="color: #000000; font-weight: bold;">&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;datatrigger</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;True&quot;</span> <span style="color: #000066;">Binding</span>=<span style="color: #ff0000;">&quot;{Binding RelativeSource={RelativeSource Self},Path=IsSelected}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">TargetName</span>=<span style="color: #ff0000;">&quot;PART_rec&quot;</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Stroke&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;#83EEEEEE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;BitmapEffect&quot;</span> <span style="color: #000066;">TargetName</span>=<span style="color: #ff0000;">&quot;PART_rec&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;setter</span> .Value<span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;outerglowbitmapeffect</span> <span style="color: #000066;">GlowColor</span>=<span style="color: #ff0000;">&quot;White&quot;</span> <span style="color: #000066;">GlowSize</span>=<span style="color: #ff0000;">&quot;7&quot;</span> <span style="color: #000066;">Noise</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">Opacity</span>=<span style="color: #ff0000;">&quot;.41&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/datatrigger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;trigger</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;IsMouseOver&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #808080; font-style: italic;">&lt;!--&lt;setter TargetName=&quot;PART_ConnectorDecorator&quot; Property=&quot;Visibility&quot; Value=&quot;Visible&quot;/&gt;--&gt;</span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">TargetName</span>=<span style="color: #ff0000;">&quot;PART_rec&quot;</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Stroke&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;#83EEEEEE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/trigger<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;trigger</span> .ExitActions<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beginstoryboard</span> <span style="color: #000066;">Storyboard</span>=<span style="color: #ff0000;">&quot;{StaticResource SBCollapse}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/trigger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;trigger</span> .EnterActions<span style="color: #000000; font-weight: bold;">&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beginstoryboard</span> <span style="color: #000066;">Storyboard</span>=<span style="color: #ff0000;">&quot;{StaticResource SBExpand}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/trigger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;datatrigger</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;True&quot;</span> <span style="color: #000066;">Binding</span>=<span style="color: #ff0000;">&quot;{Binding RelativeSource={RelativeSource Self},Path=IsDragConnectionOver}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">TargetName</span>=<span style="color: #ff0000;">&quot;PART_ConnectorDecorator&quot;</span> <span style="color: #000066;">Property</span>=<span style="color: #ff0000;">&quot;Visibility&quot;</span> <span style="color: #000066;">Value</span>=<span style="color: #ff0000;">&quot;Visible&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/datatrigger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/controltemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre>
</td>
</tr>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/expression-blends-sketchflow-diagrams-with-g2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>G2: upcoming v2.0 features</title>
		<link>http://visualizationtools.net/default/g2-upcoming-v20-features/</link>
		<comments>http://visualizationtools.net/default/g2-upcoming-v20-features/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 10:06:10 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[Diagramming]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[G2]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=2305</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.orbifold.net/default/wp-content/uploads/flowcharting.png"><img class="alignnone size-large wp-image-2306" title="G2 flowcharting" src="http://www.orbifold.net/default/wp-content/uploads/flowcharting-1024x619.png" alt="G2 flowcharting" width="728" height="440" /></a></p>
<p>We&#8217;ve been busy. The screenshots reveal quite a bit the upcoming features but let me be explicit:</p>
<ul>
<li><strong>Groups</strong>: shapes can be embedded in groups ad infinitum (this is an undoable action and copy/cut/paste works with groups as well, of course)</li>
<li><strong>Flowcharting</strong>: better support for standard flowcharting</li>
<li><strong>Arrows and connections</strong>: better support for databinding your stuff (i.e. data backend) to connections and related adorners</li>
<li><strong>Rotations</strong>: rotating shapes and groups (undoable action)</li>
<li><strong>Unity 2.0:</strong> Unity merges with the ObjectBuilder2. Nothing shacking here but it will simplify the underlying data exchange pipeline of G2.</li>
<li><strong>Library support</strong>: shapes, groups, layers, pages and whole diagrams can be saved to libraries and organized in categories. This features is based on an adapter mechanism, which means you can have libraries in a database backend or accessible via WCF etc.</li>
<li><strong>Alignments</strong>: aligning shapes is now possible. In conjunction with the snap &amp; grid features this is particularly useful to have a nice layout.</li>
<li><strong>Snap &amp; grid</strong>: everything has become snap-able.</li>
<li><strong>Linking</strong>: better support inside shapes to (hyper)link data; either diagram elements or data entities coming from your backend.</li>
<li><strong>XML</strong>: better support for XML import/export, extending the already very solid and beautiful data exchange pipeline of v1.0</li>
<li> <strong>Theming of whole diagrams:</strong> apply a style to a complete diagram (cfr. Microsoft PowerPoint)</li>
<li><strong>Auto-connect shapes</strong>: auto-add or auto-connect shapes via the adjacent arrows appearing when hovering over shapes (cfr. Microsoft Visio)</li>
<li><strong>Bug fixes and squadrillions of little changes</strong> to make G2 better, faster, more useful, more business and data oriented, more beautiful.</li>
</ul>
<p>No date fixed yet to release v2.0 though it&#8217;s pretty stable already now. So many things are going on these days&#8230; I sincerely hope to deliver a big headline one of these days regarding our future (and G2&#8242;s future in particular). In any case, I feel immensely proud about G2&#8242;s wonderful architecture and the breadth of applications it can support, the scope of features and the many high-tech subtleties which you will not find in any other diagramming package. It leaves the competition beyond the diagramming horizon.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/theming.png"><img class="alignnone size-large wp-image-2312" title="G2: theming" src="http://www.orbifold.net/default/wp-content/uploads/theming-1023x553.png" alt="G2: theming" width="754" height="407" /></a></p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/groups.png"><img class="alignnone size-large wp-image-2307" title="G2 groups" src="http://www.orbifold.net/default/wp-content/uploads/groups-1024x619.png" alt="G2 groups" width="737" height="445" /></a></p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/better.png"><img class="alignnone size-large wp-image-2310" title="G2: better, faster, bigger, more beautiful." src="http://www.orbifold.net/default/wp-content/uploads/better-1024x554.png" alt="G2: better, faster, bigger, more beautiful." width="771" height="416" /></a></p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/better.png"></a><a href="http://www.orbifold.net/default/wp-content/uploads/cwis.png"><img class="alignnone size-large wp-image-2309" title="G2: thick arrows" src="http://www.orbifold.net/default/wp-content/uploads/cwis-1024x673.png" alt="G2: thick arrows" width="766" height="503" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/g2-upcoming-v20-features/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A new family member: our WPF PropertyGrid v2.0 is released!</title>
		<link>http://visualizationtools.net/default/a-new-family-member-our-wpf-propertygrid-v20-is-released/</link>
		<comments>http://visualizationtools.net/default/a-new-family-member-our-wpf-propertygrid-v20-is-released/#comments</comments>
		<pubDate>Mon, 18 May 2009 16:34:57 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[Property Grid]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=2069</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.orbifold.net/oldsite/wp-content/uploads/wpg2.png"><img class="size-medium wp-image-2070 alignright" title="wpg 2" src="http://www.orbifold.net/oldsite/wp-content/uploads/wpg2-200x300.png" alt="wpg 2" width="200" height="300" /></a> Today I&#8217;m pleased to announce that <strong>our WPF PropertyGrid is ready for purchase</strong> and <span style="color: #993300;"><strong>Denis Vuyka</strong></span> deserves all the credits for his hard work and all the sleepless nights he put into it. See <a title="WPF PropertyGrid release details" href="http://denisvuyka.wordpress.com/2009/05/15/orbifold-wpf-propertygrid-2-0-is-out/" target="_blank">his blog for more details</a> about this release.</p>
<p>Among the more salient features:</p>
<ul>
<li>editing properties of <strong>multi-selections</strong></li>
<li><strong>theming </strong>and styling</li>
<li><strong>filtering </strong>of properties (very handy for easy access!)</li>
<li><strong>custom editors</strong> can be added with ease</li>
<li><strong>full control</strong> of what/how props are seen in the editor</li>
<li><strong>custom categories</strong></li>
</ul>
<p>In fact, everything you ever wanted and <span style="text-decoration: underline;">way better</span> than the Expressing Blend propertygrid.</p>
<p>The official product page and our updated information brochure will be soon available but prices are as follows:</p>
<ul>
<li>the <strong>single developer license</strong> (binaries, getting started guide) is yours for<strong> $200,-</strong></li>
<li>the<strong> site license </strong>(binaries, sources + unit tests, getting started guide) is <strong>500$</strong></li>
</ul>
<p>Both packages include <strong>one year of free updates and email support</strong>. Of course, we also offer custom development and integrations with our other products.</p>
<p>Stay tuned, we have more stuff in our backyard we&#8217;ll release in the near future!</p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/a-new-family-member-our-wpf-propertygrid-v20-is-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MVVM and WPF futures refer to The Orbifold!</title>
		<link>http://visualizationtools.net/default/mvvm-and-wpf-futures-refer-to-the-orbifold/</link>
		<comments>http://visualizationtools.net/default/mvvm-and-wpf-futures-refer-to-the-orbifold/#comments</comments>
		<pubDate>Tue, 05 May 2009 12:15:45 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=1999</guid>
		<description><![CDATA[The latest addition (in the WPF futures) to the official WPF project on CodePlex is related to the MVVM pattern and refers to this article of The Orbifold. I remember well, I wrote this article on December 12th 2006 (three years ago!) and I don't think it's in any way particularly important. Also, rather strange that it's only now that MVVM (and all things related to that) gets much attention...maybe WPF finally gets some momentum in the enterprise?]]></description>
			<content:encoded><![CDATA[<p>Did you know the most popular article on this site has nothing to do with diagramming? Did you know the second most popular article on this site has nothing to do with diagramming?</p>
<p>The latest addition (in the <a href="http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=14962#DownloadId=67235">WPF futures</a>) to the official WPF project on CodePlex is related to the <a title="MVVM on Google" href="http://www.google.com/search?q=mvvm" target="_blank">MVVM pattern</a> and refers to <a href="/default/?p=550">this article of The Orbifold</a>. I remember well, I wrote this article on December 12th 2006 (three years ago!) and I don&#8217;t think it&#8217;s in any way particularly important. Also, rather strange that it&#8217;s only now that MVVM (and all things related to that) gets much attention&#8230;maybe <a title="StackOverflow discussion." href="http://stackoverflow.com/questions/37944/how-popular-is-wpf-as-a-technology" target="_blank">WPF finally gets some momentum in the enterprise</a>?</p>
<p>While I do love theorizing in the context of theoretical physics, I don&#8217;t see why people find it so important to adhere to some strict pattern when it comes to software development. The MVVM pattern is interesting but I have no idea what kind of patterns I&#8217;ve used in G2 or in Graphite. Maybe software patterns become part of one&#8217;s thinking after a while and the name of these patterns become irrelevant. As far as I&#8217;m concerned, I think one should use techniques and patterns which fit the aims and the context of the application, whether it&#8217;s pattern X or Y and whether it&#8217;s the correct implementation of X and Y is really secondary. Obviously, if you have never implemented an undo/redo mechanism it&#8217;s useful to have a look at the command pattern. But could it be that the need for patterns comes with the difficulty to choose and the immense choice we nowadays have? Too many frameworks, too many open source projects, too much flexibility. At the same time, uniformity has advantages: <strong>use well-known patterns if you want to make your code more transparent to others</strong>. Go and <a href="http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=14962#DownloadId=67235">get the MVVM kit from CodePlex</a>.</p>
<p>(The second most popular article on this site is related to&#8230;the <a href="/default/?p=702">tab control</a>! Figure out why&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/mvvm-and-wpf-futures-refer-to-the-orbifold/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallel coordinates in WPF</title>
		<link>http://visualizationtools.net/default/parallel-coordinates-in-wpf/</link>
		<comments>http://visualizationtools.net/default/parallel-coordinates-in-wpf/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 05:35:37 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[Diagramming]]></category>
		<category><![CDATA[Diverse]]></category>
		<category><![CDATA[data-visualization]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=1886</guid>
		<description><![CDATA[About some customer challenge, multi-dimension data visualization and a custom WPF control which allows you to visualize ANY type of CSV/spreadsheet data.]]></description>
			<content:encoded><![CDATA[<p><strong>March 20th update</strong>: you can <a href="http://www.orbifold.net/downloads/paragraph/paragraph.demo.zip">download </a>a demo of this control now and Denis has also <a href="http://denisvuyka.wordpress.com/2009/03/20/first-wpf-parallel-coordinates-control/" target="_blank">posted an article</a> on this development.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/accumulation.png"><img class="alignleft size-medium wp-image-1887" title="accumulation" src="http://www.orbifold.net/default/wp-content/uploads/accumulation-300x238.png" alt="accumulation" width="300" height="238" /></a>How to picture a 5-dimensional sphere or a see the correlation ofÂ  112-dimensional weather data? The answer was found in 1885 when <a title="Wikipedia reference" href="http://en.wikipedia.org/wiki/Parallel_coordinates" target="_blank">parallel coordinates </a>were invented and later refined in 1959 throughÂ  <a title="The man and his story." href="http://www.math.tau.ac.il/~aiisreal/" target="_blank">Inselberg</a>. The idea is actually very simple, given some N-dimensional space of data you draw N parallel lines and each line has its own scale. Plot a given data point on these lines by creating a line between the N point of this multi-didmensional point. In this way you get a line per data point and the series of given data points are mapped to a series of lines on the graph. The situation being much like projective geometry where we also find a back-and-forth thinking between lines and points in space. The good thing about such a representation is that if points have some accumulation in a particular dimension you will see it because lines will accumulate on the axis representing this dimension (see adjacent image). This kind of correlation can usually only be detected through statistical analysis, but what do you do if you want to record or supervise data which continuously comes in from real-time systems? This would mean a continuous mathematical analysis of the sampled data and this would entail some very custom algorithm bound to the particular context.</p>
<p>A customer of ours recently challenged us to implement the parallel coordinates visualization in WPF. While quite straightforward at first sight it proved to be more difficult than we initially thought for two reasons:</p>
<ul>
<li><strong>non-numeric data</strong>: what to do if you have some string data in one of the dimensions? Say, you want to visualize in one of the dimensions a timestamp or telephone numbers or names of patients.</li>
<li><strong>how to emphasize the accumulation points</strong> in the graph? While in the screenshots above you can actually see well the discrete tendence in the second dimension, the screenshot on the right bestows you with a challenge to detect it.</li>
</ul>
<p>The first problem was tackled through an internal mapping of the data which spreads the non-numeric data across an axis. The drawback of this is that at various levels one has to switch between the actual</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/nocorrelation.png"><img class="alignright size-medium wp-image-1890" title="Where is it?" src="http://www.orbifold.net/default/wp-content/uploads/nocorrelation-300x236.png" alt="Where is it?" width="300" height="236" /></a></p>
<p>data and the internal representation for labels, line hit during hovering, the histogram (see below) and any calculation in general. The second was more difficult and entailed some analysis of the data and various visual alternatives to attract the attention of the user (human interpreter of the data). The end-result is an <strong>histogram </strong>which like a rotated bar chart on the axis graphs the relative amount of crossings on the axis. The histogram actually shows also the opposite of an accumulation, since (see the second axis in the screenshot below) an equal spreading of the histogram&#8217;s rectangles means an equal distribution of the lines across the dimension axis.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/histogram.png"><img class="alignleft size-medium wp-image-1894" title="Histogram" src="http://www.orbifold.net/default/wp-content/uploads/histogram-300x239.png" alt="Histogram" width="300" height="239" /></a>Other minor features we added to this data visualization are; the possibility to hover over the graph and see the actual data of the multi-dimensional points, datagrid binding and editing, customization of look &amp; feel through dependency properties, swapping data axes, scaling data vertically on a particular axis.</p>
<p>Probably the most satisfactory moment for myself during the development was at the point when it became clear that just <strong>any CSV/spreadsheet data can be bound to the parallel graph visualization</strong>. Indeed, due to the internal mapping mechanism one can present any type of tabular data and as a proof of concept I mocked some random spreadsheet in Excel which was subsequently visualized without a hitch.</p>
<p>Stocks &amp; shares anyone? Let me know.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/datagrid.png"><img class="aligncenter size-medium wp-image-1895" title="More visual beauty" src="http://www.orbifold.net/default/wp-content/uploads/datagrid-300x150.png" alt="More visual beauty" width="300" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/parallel-coordinates-in-wpf/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Error	102: The type reference cannot find a public type named &#039;*&#039;.</title>
		<link>http://visualizationtools.net/default/error102-the-type-reference-cannot-find-a-public-type-named/</link>
		<comments>http://visualizationtools.net/default/error102-the-type-reference-cannot-find-a-public-type-named/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 14:43:55 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=1754</guid>
		<description><![CDATA[About a little annoyance in XAML.]]></description>
			<content:encoded><![CDATA[<p>This error occurs in XAML when you have something like:</p>
<div class="wp_codebox">
<table>
<tr id="p17542">
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
</pre>
</td>
<td class="code" id="p1754code2">
<pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resourcedictionary</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">xmlns:x</span>=<span style="color: #ff0000;">&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">xmlns:Core</span>=<span style="color: #ff0000;">&quot;clr-namespace:Company.Core;assembly=Company.Core&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style</span> <span style="color: #000066;">x:Key</span>=<span style="color: #ff0000;">&quot;xxx&quot;</span> <span style="color: #000066;">TargetType</span>=<span style="color: #ff0000;">&quot;{x:Type Core:SomeObject}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/resourcedictionary<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre>
</td>
</tr>
</table>
</div>
<p>and the compiler cannot find the &#8216;SomeObject&#8217; class. Now, you can safe yourself a few hours because this error is totally fake. There is no problem with the namespace or the XAML syntax. Just change the definition of the &#8216;core&#8217;  (whatever name in your context) alias to</p>
<div class="wp_codebox">
<table>
<tr id="p17543">
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
</pre>
</td>
<td class="code" id="p1754code3">
<pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resourcedictionary</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">xmlns:x</span>=<span style="color: #ff0000;">&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">xmlns:Core</span>=<span style="color: #ff0000;">&quot;clr-namespace:Company.Core&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style</span> <span style="color: #000066;">x:Key</span>=<span style="color: #ff0000;">&quot;xxx&quot;</span> <span style="color: #000066;">TargetType</span>=<span style="color: #ff0000;">&quot;{x:Type Core:SomeObject}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/resourcedictionary<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre>
</td>
</tr>
</table>
</div>
<p>and all will be well. For some reason when you refer to a class withing the same assembly you should <u>not</u> set the &#8216;assembly&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/error102-the-type-reference-cannot-find-a-public-type-named/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Graphite for WPF</title>
		<link>http://visualizationtools.net/default/graphite-for-wpf/</link>
		<comments>http://visualizationtools.net/default/graphite-for-wpf/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 08:56:13 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[Diagramming]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=1326</guid>
		<description><![CDATA[Some time ago I released Graphite for Silverlight and it was an obvious move to transpose the code to a WPF diagramming control.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.orbifold.net/default/wp-content/uploads/graphite4wpf.png"><img class="size-medium wp-image-1328 alignnone" title="Graphite for WPF sample application." src="http://www.orbifold.net/default/wp-content/uploads/graphite4wpf-300x243.png" alt="" width="300" height="243" /></a></p>
<p>In <a title="Graphite for Silverlight" href="/default/?p=1225" target="_blank">a previous post</a> I described Graphite for Silverlight which allows you to display diagrams inside a browser with automatic layout (the spring-embedder algorithm). In a swift move I converted the library to a WPF control, which at the same time allowed me to add some features which were less trivial in Silverlight because of the constraint Silverlight imposes in comparison to WPF.</p>
<p>To demonstrate Graphite for WPF I created some kind of &#8216;star sky&#8217; of science. Ideas, persons and standard nodes are all styled in the host application and you can experiment with the Graphite API and the visual representation (look into the App.Xaml file). When hovering over a node a custom tooltip appears which can also be customized, see <a title="Graphite for Silverlight" href="/default/?p=1225" target="_self">the description of Graphite for Silverlight</a> for more details. Zooming of the diagram is implemented through the mouse-wheel. The only restriction of the demo is the maximum amount of ten nodes.</p>
<p>Loading nodes accurs through some XML format which you can define yourself, it&#8217;s not part of the control and it allows in this way a wide variety of imports/exports. It would be quite easy, in particular, to attach the application to some web or WCF service and load/unload nodes accordingly (Google search results, social network visualization and so on). See also <a title=".NetMap on CodePlex" href="/default/?p=1078" target="_self">Microsoft&#8217;s .NetMap</a> initiative in this context (it&#8217;s not WPF though).</p>
<p><a title="Graphite for WPF demo" href="/downloads/Graphite4WPF/Graphite4WPF.Demo.zip" target="_blank">Download the demo<br />
</a> (requires VS2008 and .Net 3.5sp1)</p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/graphite-for-wpf/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Silverlight diagramming with spring-embedder layout</title>
		<link>http://visualizationtools.net/default/silverlight-diagramming-with-spring-embedder-layout/</link>
		<comments>http://visualizationtools.net/default/silverlight-diagramming-with-spring-embedder-layout/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 00:01:50 +0000</pubDate>
		<dc:creator>Francois Vanderseypen</dc:creator>
				<category><![CDATA[Diagramming]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.orbifold.net/default/?p=1225</guid>
		<description><![CDATA[A lightweight diagramming control in Silverlight with the spring-embedder layout.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.orbifold.net/default/wp-content/uploads/graphiteblack.png"><img style="float:right; margin:10px " title="The graphite control in a black styling." src="http://www.orbifold.net/default/wp-content/uploads/graphiteblack-300x269.png" alt="" width="371" height="333" /></a>Many years ago when Java appeared on the scene <a title="Graph layout applet" href="http://java.sun.com/applets/jdk/1.4/demo/applets/GraphLayout/example1.html" target="_blank">a little demo applet</a> was delivered together with the <a title="Java 1.4 SDK" href="http://java.sun.com/applets/jdk/1.4/index.html" target="_blank">Java SDK</a>. It was not a huge piece of software but it sparked many ideas and a whole industry evolved around it (see <a title="TouchGraph" href="http://www.touchgraph.com/navigator.html" target="_blank">TouchGraph </a>for example), especially in the academic world. In those days things were frustrating for a Visual Basic developer, well any Microsoft developer in fact, because we only had ActiveX controls and these were far behind in many respects. It took many years for Microsoft to get over the COM and ActiveX disaster, it took us developers many years to finally have the possibility to do what Java was enabling then. Through Silverlight  there&#8217;s finally the ease of .Net inside the browser and, in fact, much more; a lightweight version of WPF which includes animation and other fancy Flash-like stuff.<br />
<span id="more-1225"></span></p>
<p>It took me little effort to shift my WPF experience to Silverlight and to transpose some layout algorithms. There are some difference, for sure, but hardly anything I can complain about. Alltogether I truly enjoyed the hours I spent on developing this little &#8216;applet&#8217;. Graphite is very similar to the Java applet but the implementation is more clean and I have taken much care of the API. The only significant part is the layout algorithm, which you can almost copy/paste from the Java applet or fetch from some Netron code. Hyperbolic layout and tree layout are easily implemented but I&#8217;m not sure I will, because I have to focus my attention back to GraphSquare.</p>
<p>See for yourself:</p>
<ul>
<li> the <a title="The black version" href="/Graphite/demo/BlackGraphite/" target="_blank">black version</a></li>
<li>the <a title="The green version" href="/Graphite/demo/WhiteGraphite/" target="_blank">green version</a></li>
</ul>
<p><strong>Usage:</strong></p>
<ul>
<li>use <strong>CTRL-click</strong> on nodes or on the canvas to add random nodes</li>
<li>use <strong>SHIFT-click</strong> to select nodes before creating a new edge. Note that you can select only two of them.</li>
<li>use<strong> ALT-click</strong> to delete a node and its bindings</li>
<li>hover over a node to see the underlying info</li>
</ul>
<p><strong>Features:</strong></p>
<ul>
<li>things are pretty much all encapsulated into a custom Canvas object</li>
<li>the API and events make it easy to manipulte the diagram in any context</li>
<li>the architecture is model-view based, the model being a straightforward graph data structure</li>
<li>data can be imported from flat text files or from XML</li>
<li>the visualization is based on WPF/SIlverlight templating and styling features outside the control, which means one can customize colors and appearance. The flexibility of WPF&#8217;s triggers and other subtleties is missing in Silverlight but one can get quite far nevertheless.</li>
<li>the layout algorithm is continous, which means you can drag nodes around like beans in jam. It all behaves very &#8216;organic&#8217;.</li>
</ul>
<p><em>Addendum</em>: due to a different font on your side you might see node titles a little bit bigger or smaller than on the screenshots.<br />
<em>Demo</em>: go ahead and have fun with <a title="Download the Graphite Demo project." href="http://www.orbifold.net/Downloads/Graphite4Silverlight/Graphite.Demo.zip">the Graphite demo</a>.</p>
<p><a href="http://www.orbifold.net/default/wp-content/uploads/graphitegreen.png"><img style="float:right; margin:10px " title="The graphite control is a green styling." src="http://www.orbifold.net/default/wp-content/uploads/graphitegreen-300x200.png" alt="" width="300" height="200" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://visualizationtools.net/default/silverlight-diagramming-with-spring-embedder-layout/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.visualizationtools.net/default/tag/wpf/feed/ ) in 1.02902 seconds, on Feb 9th, 2012 at 7:10 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 8:10 am UTC -->
