<?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>Intersoft Solutions Corporate Blog &#187; 2012 R1</title>
	<atom:link href="http://blog.intersoftsolutions.com/category/2012-r1/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.intersoftsolutions.com</link>
	<description>All about development productivity – ASP.NET, Silverlight, WPF, iOS, Android, Windows Phone, Windows 8</description>
	<lastBuildDate>Sat, 21 Apr 2018 06:57:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.33</generator>
	<item>
		<title>Intersoft Product Survey 2013</title>
		<link>http://blog.intersoftsolutions.com/2013/03/intersoft-product-survey-2013/</link>
		<comments>http://blog.intersoftsolutions.com/2013/03/intersoft-product-survey-2013/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 03:02:23 +0000</pubDate>
		<dc:creator><![CDATA[martinlie]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[2012 R2]]></category>
		<category><![CDATA[Developer Network]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Products]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=3021</guid>
		<description><![CDATA[The arrival of Windows 8 adds more choices to the platform stack that mobile developers should consider. So my question is, do you plan to build Windows 8 apps, or perhaps you already built one? As we&#8217;re planning our roadmap ahead, we&#8217;d love to hear [...]]]></description>
				<content:encoded><![CDATA[<img width="436" height="250" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/06/marketing.jpg" class="attachment-post-thumbnail wp-post-image" alt="marketing" style="float:right; margin:0 0 10px 10px;" /><p>The arrival of Windows 8 adds more choices to the platform stack that mobile developers should consider. So my question is, do you plan to build Windows 8 apps, or perhaps you already built one? As we&#8217;re planning our roadmap ahead, we&#8217;d love to hear from you – which platforms will you build your next apps on, the challenges you&#8217;re facing, and what tools you need to get your jobs done right.</p>
<p>Join our <a href="http://www.surveymonkey.com/s/YMHFDLK" target="_blank">2013 product survey</a> and place your vote so we can align our next product roadmap to your development needs.</p>
<p>Your participation is an effective way to present your thoughts and opinions about our products and service to the management of Intersoft Solutions. I do believe that your valuable feedback would be very useful to help us improve our products and services in the future.</p>
<p>If you have any questions or technical difficulties, please don’t hesitate to drop an email to me at <a href="mailto:martin@intersoftpt.com">martin@intersoftpt.com</a>.</p>
<p>Thank you for your time and participation.</p>
<p>Regards,<br />
Martin</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2013/03/intersoft-product-survey-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebUI Studio for Visual Studio 2012 is here!</title>
		<link>http://blog.intersoftsolutions.com/2012/09/webui-studio-for-visual-studio-2012-is-here/</link>
		<comments>http://blog.intersoftsolutions.com/2012/09/webui-studio-for-visual-studio-2012-is-here/#comments</comments>
		<pubDate>Wed, 05 Sep 2012 16:04:21 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[IE 10]]></category>
		<category><![CDATA[New Releases]]></category>
		<category><![CDATA[Service Pack 1]]></category>
		<category><![CDATA[Visual Studio 2012]]></category>
		<category><![CDATA[WebUI Studio]]></category>
		<category><![CDATA[Windows 8]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2830</guid>
		<description><![CDATA[The wait is over – the highly anticipated WebUI Studio 2012 SP1 release is now available for download. Grab your copy here. As mentioned in my recent posts, the new service pack release includes full support for Visual Studio 2012 which updates all 40+ component [...]]]></description>
				<content:encoded><![CDATA[<img width="466" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/image_thumb46-604x350.png" class="attachment-post-thumbnail wp-post-image" alt="Help integration in Visual Studio 2012" style="float:right; margin:0 0 10px 10px;" /><p>The wait is over – the highly anticipated WebUI Studio 2012 SP1 release is now available for download. Grab your copy <a href="http://www.intersoftpt.com/webuistudio/try">here</a>.</p>
<p>As mentioned in my recent posts, the new service pack release includes full support for Visual Studio 2012 which updates all 40+ component designers to adhere the Visual Studio UX guidelines. In addition, this release has been optimized for Windows 8 as well as support for Internet Explorer 10. For details, check out my post <a href="https://intersoftpt.wordpress.com/2012/07/24/coming-up-visual-studio-2012-windows-8-and-ie-10-support/">here</a>.</p>
<p>Even more, the new service pack ships dozens of new features and major performance improvements to the Silverlight and WPF controls, ranging from the ribbon controls, all variants of selection controls, smoother animation in expandable group box, attribute-based licensing mechanism, and much more. For complete details, make sure you check out the Release Notes document once the service pack is installed successfully.</p>
<h2>Help Integration in Visual Studio 2012</h2>
<p>In addition to a host of designer-related enhancements, this new release also automatically plug all products documentation into Help Viewer 2.0 which shares the modern Visual Studio interface. The look and feel of the documentation content has been updated as well to share the same metaphor, see the shot below.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/09/image.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Help integration in Visual Studio 2012" border="0" alt="Help integration in Visual Studio 2012" src="http://intersoftpt.files.wordpress.com/2012/09/image_thumb.png" width="642" height="429"></a></p>
<p>Everything you need is here. And whenever you need help, simply press F1 and locate the topics in the new Help Viewer.</p>
<h2>More details on Visual Studio 2012</h2>
<p><img src="http://www.intersoftpt.com/WebResources/Images/VS2012/Banner.jpg" width="679" height="312"></p>
<p>Along with this release, we’re pleased to introduce a new page dedicated to Visual Studio 2012 which contains related information and resources. Check it out at <a href="http://www.intersoftpt.com/vs2012">intersoftpt.com/vs2012</a>.</p>
<p>Last but not least, enjoy (Visual + WebUI) Studio 2012! Here’s the <a href="http://www.intersoftpt.com/webuistudio/try">download</a> link again in case you missed it.</p>
<p>All the best,<br />Jimmy</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/09/webui-studio-for-visual-studio-2012-is-here/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebUI Studio Designer Reimagined</title>
		<link>http://blog.intersoftsolutions.com/2012/08/webui-studio-designer-reimagined/</link>
		<comments>http://blog.intersoftsolutions.com/2012/08/webui-studio-designer-reimagined/#comments</comments>
		<pubDate>Wed, 22 Aug 2012 19:38:48 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[Component Designer]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[UI Design]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[Visual Studio 2012]]></category>
		<category><![CDATA[WebUI Studio]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2802</guid>
		<description><![CDATA[Last week, Microsoft has finally released its long awaited Visual Studio 2012 to the MSDN subscribers. As VSIP partners, we had the RTM bits several weeks earlier and started testing our component designer features for the new Visual Studio. Just in timely fashion, we’ve recently [...]]]></description>
				<content:encoded><![CDATA[<img width="466" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/designer6_thumb1-604x350.png" class="attachment-post-thumbnail wp-post-image" alt="Introducing WebUI Studio Designer for Visual Studio 2012" style="float:right; margin:0 0 10px 10px;" /><p>Last week, Microsoft has finally released its long awaited Visual Studio 2012 to the MSDN subscribers. As VSIP partners, we had the RTM bits several weeks earlier and started testing our component designer features for the new Visual Studio.</p>
<p>Just in timely fashion, we’ve recently completed the development and testing milestones for our new component designer – rebuilt entirely from the scratch to provide the best support for Visual Studio 2012. In this blog post, I’ll share some of the design experiences while remaking our component designer. Read on.</p>
<h2>The Visual Studio 2012 UX Guidelines</h2>
<p>Since the invention of “Metro” design language, Microsoft has been redesigning all its software products toward the modern UI design, including the recently released Visual Studio 2012. As a result of the redesign, Microsoft has now introduced the so-called “Visual Studio 2012 UX Guidelines” which has to be adhered by its development ecosystem partners. We’re thrilled to be among the first who have adhered to the UX guidelines, and will release our new version at the same time of the official Visual Studio 2012 launch.</p>
<p>To adhere to the UX guidelines, our designer team have redesigned nearly 200+ toolbox icons to the Metro style. Furthermore, we decided to remake the component designer to support the new look and feel of Visual Studio 2012, and more importantly, to support the philosophy of the user experiences which essentially emphasizes on content with reduced decorators.</p>
<p>Meet the new Component Designer for Visual Studio 2012. It’s rebuilt entirely from the scratch to resemble the Visual Studio 2012 interface. The all-new designer is now built on the WPF 4 platform and leveraging our own ClientUI for WPF controls – thanks to the comprehensive and easily style-able controls, we managed to remake the component designer ahead of the expected schedule. </p>
<p>The following screenshot shows the new WebUI Studio component designer with much cleaner design and Metro’s iconography.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer6.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Introducing WebUI Studio Designer for Visual Studio 2012" border="0" alt="Introducing WebUI Studio Designer for Visual Studio 2012" src="http://intersoftpt.files.wordpress.com/2012/08/designer6_thumb.png" width="639" height="482"></a></p>
<p>It’s important to note that previous version of Visual Studio will continue to be supported. The WebUI Studio component designer launches the new WPF-based designer only when it’s running inside Visual Studio 2012. This is made possible thanks to the loosely-coupled architecture in the component designer framework.</p>
<p>So, when you’re working with WebUI Studio components in Visual Studio 2008 or 2010, you’ll get the old, clunky component designer with sea of colors. And when you’re in Visual Studio 2012, it automatically launches the new modern-styled component designer. Keep in mind that the control assemblies are identical regardless of the Visual Studio version.</p>
<p>The shots below show the designer comparison between the Visual Studio 2010 and 2012.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/olddesignerfull1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Designer support in older version of Visual Studio" border="0" alt="Designer support in older version of Visual Studio" src="http://intersoftpt.files.wordpress.com/2012/08/olddesignerfull1_thumb.png" width="642" height="433"></a><a href="http://intersoftpt.files.wordpress.com/2012/08/designerfull1.png"></p>
<p><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Intersoft Component Designer for Visual Studio 2012" border="0" alt="Intersoft Component Designer for Visual Studio 2012" src="http://intersoftpt.files.wordpress.com/2012/08/designerfull1_thumb.png" width="642" height="430"></a></p>
<p>One of the most useful benefits with the migration to WPF is that you get automatic support for the screen resolution and font scaling. This means that if your Windows is set to use 125% larger font, the component designer will automatically reflect the control and layout to fit to the desired scale. The WinForms layout didn’t have that luxury, and it’s extremely difficult to manage the auto scaling settings. This is why you’ll find many inappropriately truncated text and graphics in the old designer when using larger font scaling.</p>
<p>Furthermore, the WPF designer has much better performance compared to WinForms in terms of initial loading, rendering, animation and navigation. This allows us to achieve the “fast and fluid” user experiences.</p>
<p>Back to the main subject, we actually reimagine all aspects of the designer – whether it’s the functionality or the design. For examples, compared to the previous version, the new Layout Manager has much cleaner surface, and eventually makes it more intuitive and easier-to-use at a glance. The art of this design language is that it focuses on the content and brings the functionality back to where it supposed to be. Take a look at the screenshot below.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer3.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Layout Manager" border="0" alt="Layout Manager" src="http://intersoftpt.files.wordpress.com/2012/08/designer3_thumb.png" width="639" height="482"></a></p>
<p>We also pay attention on the user experience details where message boxes should be avoided whenever possible. In this remake, we’re now displaying important messages in the accented status bar.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer5.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Component Designer with Accented Status Bar" border="0" alt="Component Designer with Accented Status Bar" src="http://intersoftpt.files.wordpress.com/2012/08/designer5_thumb.png" width="639" height="482"></a></p>
<p>Meanwhile, the Structure Manager is also redesigned with the identical aesthetic and consistent layout, enabling users to understand the user interface with less learning curves.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer4.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Structure Manager" border="0" alt="Structure Manager" src="http://intersoftpt.files.wordpress.com/2012/08/designer4_thumb.png" width="639" height="482"></a></p>
<h2>Simplified and Smarter User Experiences</h2>
<p>One thing that we learnt about Metro design language is that it’s not only about the user interface, i.e., the colors, themes or shapes. The true essences behind the philosophy is the simplified user experiences. But, the “simplified” here doesn’t necessary mean removing features, it’s more to making user experiences smarter which allows users to perform a task or function in less time, and more efficiently.</p>
<p>We have a number of interesting stories about making user experiences simpler yet smarter while remaking the component designer for WebGrid. </p>
<p>With hundreds of features, it’s quite challenging to find a particular setting or feature in the property window. So we introduced a component designer to address this challenge that looks like the following shot.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/olddesigner4.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Pre VS 2012 designer for WebGrid" border="0" alt="Pre VS 2012 designer for WebGrid" src="http://intersoftpt.files.wordpress.com/2012/08/olddesigner4_thumb.png" width="619" height="482"></a></p>
<p>I personally think that the idea and purpose of such designer is good, although the existing design may now look cluttered. At a glance, the settings are spreading everywhere. Notice that we have numerous in the left-side navigation vertically, and also some tabs in the top arranged horizontally.</p>
<p>In the WebGrid designer remake, we managed to put everything back to where it should through a deep category rearrange that is based on content and function similarity. Tabs such as Advanced, Localization Manager and Pivot Charting are now removed from the top since they are now part of the Properties. Redundant navigation items are merged into a content that makes more sense. See the shots below to get a closer look.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer11.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="WebGrid Designer for Visual Studio 2012" border="0" alt="WebGrid Designer for Visual Studio 2012" src="http://intersoftpt.files.wordpress.com/2012/08/designer11_thumb.png" width="639" height="482"></a></p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer7.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="WebGrid Designer for Visual Studio 2012" border="0" alt="WebGrid Designer for Visual Studio 2012" src="http://intersoftpt.files.wordpress.com/2012/08/designer7_thumb.png" width="639" height="482"></a></p>
<p>With the designs shown above, you’re no longer served with massive user interface elements that present the same function. So the Properties tab basically means that “come here for all settings-related tasks”. This allows us to keep the design ideal with balanced functionality. Lessons learned.</p>
<p>Similarly, we simplify the Caching and Performance Tuning tabs such as shown below…</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/olddesigner5.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Pre VS 2012 WebGrid designer" border="0" alt="Pre VS 2012 WebGrid designer" src="http://intersoftpt.files.wordpress.com/2012/08/olddesigner5_thumb.png" width="619" height="482"></a></p>
<p>… into just a single Advanced tab shown below.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer9.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="WebGrid designer with smarter user experiences" border="0" alt="WebGrid designer with smarter user experiences" src="http://intersoftpt.files.wordpress.com/2012/08/designer9_thumb.png" width="639" height="482"></a></p>
<p>We designed smarter user experiences by categorizing them into expandable groups styled with lightly-shaded accent and Metro colors. </p>
<p>Furthermore, the new designer is not simply a remaking effort, we actually added a number of new options that makes performance tuning a breeze. Notice the red highlighted area in the shot above, you can now enable the built-in resources compression with a single click. This feature actually existed since the 2009 release, but not easily discoverable as you need to manually make changes to the web.config file.</p>
<p>More options are now added to the Common Settings view which includes the new features introduced in the recent releases. For instances, enabling HTML5 rendering mode across the application is simply a tick away.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/08/designer8.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="WebGrid designer with smarter user experiences" border="0" alt="WebGrid designer with smarter user experiences" src="http://intersoftpt.files.wordpress.com/2012/08/designer8_thumb.png" width="639" height="482"></a></p>
<h2>All 40+ Component Designer Redesigned</h2>
<p>In this blog post, I’ve only scratched the surface of our new component designer for Visual Studio 2012. In addition to flagship products such as WebGrid, we also update the designer of entire WebUI Studio family, including WebCombo, WebInput, WebScheduler, WebTextEditor and the rest of components resembled in WebDesktop and WebEssentials.</p>
<p>As far as I can say, we’re making WebUI Studio the first-class citizen of Visual Studio 2012 which enables both products to work best together for the ultimate application development experiences.</p>
<p>We’re expecting to deliver all these new exciting features in the upcoming WebUI Studio service pack release by next week – and hopefully faster. The service pack will also include many <a href="http://intersoftpt.wordpress.com/2012/07/24/coming-up-visual-studio-2012-windows-8-and-ie-10-support/">new enhancements</a> for Windows 8 and Internet Explorer 10, all-new project templates for Visual Studio 2012, as well as reliability improvements to all Silverlight and WPF components. Stay tuned for the release announcement!</p>
<p>Best,<br />Jimmy</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/08/webui-studio-designer-reimagined/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Line-of-Business Samples in ClientUI 7</title>
		<link>http://blog.intersoftsolutions.com/2012/06/new-line-of-business-samples-in-clientui-7/</link>
		<comments>http://blog.intersoftsolutions.com/2012/06/new-line-of-business-samples-in-clientui-7/#comments</comments>
		<pubDate>Fri, 29 Jun 2012 09:32:27 +0000</pubDate>
		<dc:creator><![CDATA[martinlie]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[ClientUI]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[New Releases]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2767</guid>
		<description><![CDATA[Introducing the new data controls lineups such as UXPageableComboBox UXMultipleSelectionComboBox and UXTreeList, developers can now build large-scale data entry applications with blazing fast performance. UXGridView also adds with several enhancements and advanced features such as columns collection binding, column header binding and batch items validation. [...]]]></description>
				<content:encoded><![CDATA[<img width="464" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/cabinfront_thumb1.png" class="attachment-post-thumbnail wp-post-image" alt="CabinFront" style="float:right; margin:0 0 10px 10px;" /><p>Introducing the new data controls lineups such as UXPageableComboBox UXMultipleSelectionComboBox and UXTreeList, developers can now build large-scale data entry applications with blazing fast performance. UXGridView also adds with several enhancements and advanced features such as columns collection binding, column header binding and batch items validation. Click <a href="http://www.clientui.com/New">here</a> to find out more about the new controls in ClientUI 7.</p>
<p>In this blog post, I will share some of the new samples demonstrating the new products, as well as reviewing the key features.</p>
<p>Below are some of the top new samples that goes to my favorite list.</p>
<ol>
<li><strong>Cabin Front Reservation<br /></strong>
<p>UXPageableComboBox is an enhanced UXDataComboBox control featuring highly efficient server paging mechanism. The control addresses performance issues in large data scenario by retrieving only the required data on demand, and perform incremental data retrieval when the total item count exceeds the specified page size.</p>
<p>In this sample, you are able to perform Multiple columns layout with built-in column type such as Text, Images and Templates. You can perform sorting and description text feature using this control. With description text, you can show additional information related to the selected item in the right edge of the control. It is used to allow you easily understand the meaning of the input value at a glance. <a href="http://live.clientui.com/#/DataControls/UXPageableComboBox" target="_blank">Explore the sample</a>.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/cabinfront.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="CabinFront" border="0" alt="CabinFront" src="http://intersoftpt.files.wordpress.com/2012/06/cabinfront_thumb.png" width="595" height="346"></a></p>
<p>&nbsp;</p>
<li><strong>Customer Order<br /></strong>In this sample, you will see the tight integration between UXGridView and UXPageableComboBox. You can edit a column in UXGridView and bind it with UXPageableComboBox. With this feature, you can fully use all features available in UXPageableComboBox inside UXGridView, such as Multiple columns layout, Auto-complete behavior, advanced data grouping and sorting capability and many more. <a href="http://live.clientui.com/#/DataControls/UXPageableComboBox/InsideGridView" target="_blank">Explore the sample</a>.
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/customerorder.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="CustomerOrder" border="0" alt="CustomerOrder" src="http://intersoftpt.files.wordpress.com/2012/06/customerorder_thumb.png" width="587" height="383"></a></p>
<li><strong>Mail Application<br /></strong>UXMultipleSelectionComboBox is an advanced queryable ComboBox control specially designed to support multiple selection. It provides an intuitive data entry mode that allows users to quickly select multiple items through type-and-tab gesture. It supports both Editable and Readonly mode. This control has every features that are available in UXPageableComboBox.
<p>In this sample, editable mode is used. It means that you can directly update the selection through the text input element. The control filters the data instantaneously as you type ahead, and the selection will be added with a single Tab key. Also, the built-in smart filter feature automatically prevents any items that you have selected to appear on the list for the next selection. <a href="http://live.clientui.com/#/DataControls/UXMultipleSelectionComboBox" target="_blank">Explore the sample</a>.</li>
</ol>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/mailapplication.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="MailApplication" border="0" alt="MailApplication" src="http://intersoftpt.files.wordpress.com/2012/06/mailapplication_thumb.png" width="594" height="333"></a></p>
<ol>
<li><strong>Project Milestone<br /></strong>UXTreeList is a unique data control used to display self-referencing hierarchical data. You can use the HierarchicalCollectionView to transform your self-reference table into a hierarchical self-reference data.
<p>&nbsp;<br />UXTreeList combines all UXGrid features such as data editing, grouping and paging with UXTreeView’s expand/collapse functionality to perfectly present any hierarchical data.</p>
<p>In this sample, some features demonstrated are variety of columns type, common data manipulation and data editing that includes drag and drop to re-arrange your data. <a href="http://live.clientui.com/#/DataControls/UXTreeList" target="_blank">Explore the sample</a>.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/projectmilestone.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ProjectMilestone" border="0" alt="ProjectMilestone" src="http://intersoftpt.files.wordpress.com/2012/06/projectmilestone_thumb.png" width="613" height="451"></a></p>
<li><strong>Chart of Account<br /></strong>
<p>UXTreeList supports load on demand scenario using MVVM pattern where only the root items are loaded initially. The children will be loaded on demand as users expanded the item for the first time. This feature is particularly useful to improve the overall performance when the assigned data source is relatively large.</p>
<p>In this sample, IsLoadOnDemand property is set to True in order to activate the load-on-demand feature. In this mode, a busy indicator will be automatically displayed in each expanded item during the loading progress. <a href="http://live.clientui.com/#/DataControls/UXTreeList/ChartOfAccount" target="_blank">Explore the sample</a>.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/chartofaccount.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ChartOfAccount" border="0" alt="ChartOfAccount" src="http://intersoftpt.files.wordpress.com/2012/06/chartofaccount_thumb.png" width="607" height="348"></a></p>
<li><strong>Empty Row Visibility</strong><br />UXGridView lets you easily create beautiful data presentation with look and feel similar to popular desktop-based apps such as iTunes, Quick Books, or other business apps alike. With the new innovative rendering feature, UXGridView automatically fills the entire view port with alternating rows instead of leaving a large white empty space.
<p>&nbsp;<br />This sample demonstrates the empty rows visibility feature in UXGridView. When this featuere is enabled the UXGridView will render all the empty rows within the view port. You can also insert a new row from bottom when NewRowPosition is set to Bottom and CanUserAddRows is set to True. <a href="http://live.clientui.com/#/UXGridView/Customization/EmptyRowsVisibility" target="_blank">Explore the sample</a>.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/emptyrow.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="EmptyRow" border="0" alt="EmptyRow" src="http://intersoftpt.files.wordpress.com/2012/06/emptyrow_thumb.png" width="611" height="429"></a></p>
<li><strong>Bottom New Row Position<br /></strong>This new feature brings flexibility to the way users interact with the grid. Users can now rapidly add new items by clicking the bottom part of the grid, just like they would do in Excel. Activate this feature in your apps with a simple property set.
<p>In this sample, you can see there are new row position indicator on the last row in UXGridView. To go to the new row you can click the empty rows or use keyboard down on the last item. <a href="http://live.clientui.com/#/UXGridView/Editing/NewRowPosition" target="_blank">Explore the sample</a>.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/newrow.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="newrow" border="0" alt="newrow" src="http://intersoftpt.files.wordpress.com/2012/06/newrow_thumb.png" width="620" height="435"></a></p>
<li><strong>Sequence Column<br /></strong>Introducing the new UXGridViewSequenceColumn, you can now effortlessly display a column that automatically display sequential number to your data grid.
<p>&nbsp;<br />In this sample, we have UXGridViewSequenceColumn which is used to show the row index of the current display. Note that the sequence column can not be sorted and will always show the row index regardless of the sorting or filtering state. <a href="http://live.clientui.com/#/UXGridView/Customization/SequenceColumn" target="_blank">Explore the sample</a>.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/seq.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="seq" border="0" alt="seq" src="http://intersoftpt.files.wordpress.com/2012/06/seq_thumb.png" width="611" height="459"></a></p>
</li>
</ol>
<p>For more information about ClientUI, you can explore our <a href="http://www.clientui.com/" target="_blank">Live Samples</a> or read through our <a href="http://intersoftpt.com/Support/ClientUI/Documentation" target="_blank">Online Documentation</a>.</p>
<p>Feel free to download your copy <a href="http://www.clientui.com/download/">here</a>. And while waiting for the download, be sure to check out the complete what’s new list <a href="http://www.intersoftpt.com/2012/">here</a>. Existing customers with valid subscription can obtain the latest WebUI Studio from <a href="http://dev2.intersoftpt.com/">Developer Network</a>, under My Components shortcut.</p>
<p>If you have any questions regarding sales or licensing, you can directly email me at <a href="mailto:martin@intersoftpt.com">martin@intersoftpt.com</a>. Any comments or feedbacks are welcome.</p>
<p>Thank you and have a nice day.</p>
<p>Regards,<br />Martin</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/06/new-line-of-business-samples-in-clientui-7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebUI Studio 2012 is here!</title>
		<link>http://blog.intersoftsolutions.com/2012/06/webui-studio-2012-is-here/</link>
		<comments>http://blog.intersoftsolutions.com/2012/06/webui-studio-2012-is-here/#comments</comments>
		<pubDate>Tue, 19 Jun 2012 17:26:10 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[ClientUI]]></category>
		<category><![CDATA[Data Controls]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[New Releases]]></category>
		<category><![CDATA[New Website]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WebUI Studio]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2749</guid>
		<description><![CDATA[The wait is over. We’re incredibly excited to announce the immediate availability of WebUI Studio 2012 today! The new release ships major upgrades for the flagship ASP.NET data controls such as WebGrid and WebCombo – featuring full HTML5 support, and includes dozens of must-have data [...]]]></description>
				<content:encoded><![CDATA[<img width="466" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/image_thumb45-604x350.png" class="attachment-post-thumbnail wp-post-image" alt="Intersoft" style="float:right; margin:0 0 10px 10px;" /><p>The wait is over. We’re incredibly excited to announce the immediate availability of WebUI Studio 2012 today! The new release ships major upgrades for the flagship ASP.NET data controls such as WebGrid and WebCombo – featuring full HTML5 support, and includes dozens of must-have data controls specifically designed to address line-of-business scenarios in Silverlight/WPF application development.</p>
<p>You can download your copy <a href="http://www.webuistudio.com/try">here</a>. And while waiting for the download, be sure to check out the complete what’s new list <a href="http://www.intersoftpt.com/2012/">here</a>. </p>
<p>In addition, you might want to check out many updates that we’ve put together in this release including the live samples for both ASP.NET and Silverlight, as well as online documentation. The WebGrid documentation is now completely revamped to match the new documentation standards and guidelines that we introduced in ClientUI.</p>
<ul>
<li><a href="http://www.intersoftpt.com/Support/ClientUI/Documentation/#url=topic184.html">What’s new in ClientUI 7</a> (Detailed Change Logs)</li>
<li><a href="http://www.intersoftpt.com/Support/WebGrid/Documentation">WebGrid 8 Online Documentation</a></li>
<li><a href="http://www.intersoftpt.com/Support/WebCombo/Documentation">WebCombo 7 Online Documentation</a> </li>
<li><a href="http://live.intersoftpt.com/">ASP.NET Live Demos</a></li>
<li><a href="http://live.clientui.com/">Silverlight Live Demos</a></li>
</ul>
<p>Along with the new release, we’re pleased to announce the launch of <a href="http://www.intersoftpt.com/">Intersoft’s new website</a> design. Completely revamped for the best user experiences, you can now get around faster and easier than ever before. And with clean yet elegant design, you can focus on the information and content better. We hope you liked our redesigned website!</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/06/image.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Intersoft's new home" border="0" alt="Intersoft's new home" src="http://intersoftpt.files.wordpress.com/2012/06/image_thumb.png" width="642" height="356"></a></p>
<p>Last but not least, enjoy WebUI Studio 2012! Again, click <a href="http://www.intersoftpt.com/RequestTrial">here</a> to download the new 2012 today if you haven’t. We hope you love the new release as much as we love building it!
<p>Note: For active subscribers, you will receive the new license keys within 24 hour. Make sure you have whitelisted the intersoftpt.com domain to avoid communication problems.
<p>All the best,<br />Jimmy </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/06/webui-studio-2012-is-here/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WebUI Studio 2012 for ASP.NET Goes HTML5</title>
		<link>http://blog.intersoftsolutions.com/2012/05/webui-studio-2012-for-asp-net-goes-html5/</link>
		<comments>http://blog.intersoftsolutions.com/2012/05/webui-studio-2012-for-asp-net-goes-html5/#comments</comments>
		<pubDate>Tue, 29 May 2012 17:31:54 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[WebUI Studio]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2745</guid>
		<description><![CDATA[Earlier this year, we conducted a short product survey to all our customers and industry partners. Nearly 92% of all respondents indicates that they are interested in HTML5 development, followed with Silverlight 5 at approximately 85% – up 15% since the previous survey last year. [...]]]></description>
				<content:encoded><![CDATA[<img width="466" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/wg8_pivotchart_thumb1-604x350.png" class="attachment-post-thumbnail wp-post-image" alt="HTML5 Support for Pivot Charting in WebGrid 8" style="float:right; margin:0 0 10px 10px;" /><p>Earlier this year, we conducted a short product survey to all our customers and industry partners. Nearly 92% of all respondents indicates that they are interested in HTML5 development, followed with Silverlight 5 at approximately 85% – up 15% since the previous survey last year. We thoughtfully consider the survey results to drive our products development roadmap. That said, we’re pleased to announce that the upcoming 2012 release will include two major ASP.NET releases: <strong>WebGrid Enterprise 8</strong> and <strong>WebCombo 6</strong>.</p>
<h2>Full HTML5 and CSS3 Support</h2>
<p>As written in our <a href="http://dev2.intersoftpt.com/">2012 product roadmap</a>, HTML5 is going to be one of our key focuses in this year’s releases. In the first volume, it’s confirmed that we’ll deliver the next major version of WebGrid Enterprise and WebCombo – both are the flagship data controls in our ASP.NET lineup.</p>
<p>The new WebGrid and WebCombo have been redesigned to fully support HTML5, which includes compliance to the HTML5 doc type and removal of the obsolete markups. The control rendering has been significantly revamped in order to achieve pixel-perfect layout in HTML5. And better yet, we employed <em>HTML5 adaptive rendering technique </em>so you can expect 100% backward compatibility with HTML4 and XHTML doctype. This means that your existing projects that are still using HTML4 or XHTML doctype will continue to work as is.</p>
<p>With full HTML5 support, you can expect consistent results in terms of layout and behaviors across popular HTML5-ready browsers such as IE 9, Firefox 12, and Chrome 18. For example, the pivot charting feature in WebGrid now renders flawlessly across all browsers, including the Ribbon and all UI interactions such as drag-and-drop, resizing, and so forth.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/wg8_pivotchart.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="HTML5 Support for Pivot Charting in WebGrid 8" border="0" alt="HTML5 Support for Pivot Charting in WebGrid 8" src="http://intersoftpt.files.wordpress.com/2012/05/wg8_pivotchart_thumb.png" width="642" height="446"></a></p>
<p>When the control detects the use of HTML5 doc type, it will automatically leverage CSS3 which leads to smaller footprint and more elegant results. For instances, WebCombo 6 leverages many of the approved CSS3 specifications such as the round corner and drop shadow feature. Note that in pre-HTML5, the round corner was achieved with multiple DIVs and a number of quirk styles. These solutions no longer apply in HTML5, and has been replaced with CSS3 starting in the upcoming WebUI Studio release.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image10.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="WebCombo 6 leverages CSS3 for round corner and shadow effect" border="0" alt="WebCombo 6 leverages CSS3 for round corner and shadow effect" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb10.png" width="642" height="338"></a></p>
<h2>No Features Are Too Minor</h2>
<p>When we talked about HTML5 support, we really meant it. We’ve gone the great length and depth to revive all features to work perfectly in HTML5 – regardless of whether they are major or minor features.</p>
<p>For instances, a small yet useful feature such as tree lines visibility in WebGrid is now supported in HTML5. Rather than forcing our customers to disable this feature, we’ve revamped the entire rendering markup to get it working in HTML5 with consistent results across all browsers. The following screenshot shows the WebGrid control with nested hierarchical feature enabled running on IE9 standards mode.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image11.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Full HTML5 Support in WebGrid 8" border="0" alt="Full HTML5 Support in WebGrid 8" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb11.png" width="772" height="457"></a></p>
<p>Most WebGrid’s key features have been enhanced to support HTML5, from column freezing, filtering and paging, keyboard navigation, column moving and resizing, to custom editors, client-side binding and smart batch update.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image12.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="All key features are revamped to fully support HTML5 and CSS3" border="0" alt="All key features are revamped to fully support HTML5 and CSS3" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb12.png" width="772" height="428"></a></p>
<p>Similarly, the new WebCombo received major enhancements enabling all features to work precisely across all modern browsers, from multiple columns layout, auto complete behavior, search box position, to the smallest details such as the control styles.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image13.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="WebCombo 6 features pixel-perfect rendering and styles in HTML5 apps" border="0" alt="WebCombo 6 features pixel-perfect rendering and styles in HTML5 apps" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb13.png" width="642" height="463"></a></p>
<p>In conclusion, the full compliance with HTML5 and the leverage of CSS3 mark a major milestone in the WebUI Studio for ASP.NET lineup roadmap. The new WebGrid and WebCombo are only the starting point in this release, you can expect the rest of ASP.NET components to be fully HTML5-ready in this year’s second release.</p>
<p>If you’ve specific HTML5-related features that you’d love to see in the upcoming releases, please feel free to drop your comments in the box below.</p>
<p>Best,<br />Jimmy</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/05/webui-studio-2012-for-asp-net-goes-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ClientUI 7 Preview Part 4: Multiple Selection ComboBox with Auto Filter and Checkbox Input Support</title>
		<link>http://blog.intersoftsolutions.com/2012/05/clientui-7-preview-part-4-multiple-selection-combobox-with-auto-filter-and-checkbox-input-support/</link>
		<comments>http://blog.intersoftsolutions.com/2012/05/clientui-7-preview-part-4-multiple-selection-combobox-with-auto-filter-and-checkbox-input-support/#comments</comments>
		<pubDate>Tue, 15 May 2012 12:33:37 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[ClientUI]]></category>
		<category><![CDATA[CTP]]></category>
		<category><![CDATA[Multiple Selection ComboBox]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WebUI Studio]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2732</guid>
		<description><![CDATA[Earlier this month, I’ve blogged about some of the exciting new controls that we will release in the next few weeks, which include a brand-new combobox with server paging multi-column support, enhanced GridView and new ItemsControl grouping capability. Many of these new controls are aimed [...]]]></description>
				<content:encoded><![CDATA[<img width="374" height="68" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/image_thumb44.png" class="attachment-post-thumbnail wp-post-image" alt="Introducing UXMultipleSelectionComboBox" style="float:right; margin:0 0 10px 10px;" /><p>Earlier this month, I’ve blogged about some of the exciting new controls that we will release in the next few weeks, which include a brand-new combobox with server paging multi-column support, enhanced GridView and new ItemsControl grouping capability. Many of these new controls are aimed for business application development that target Silverlight and WPF platforms – and soon WinRT. You can check out the full coverage <a href="http://intersoftpt.wordpress.com/2012/05/04/clientui-preview-part-3-pageable-and-multi-column-combobox-enhanced-gridview-items-grouping-and-more/">here</a>.</p>
<p>These days, web applications are getting more attractive with much better user experiences than in couple years ago. Numerous innovative UI controls are popping up as new design patterns are discovered. One of the most demanded controls that requested by our enterprise customers is the Facebook or Dropbox-like multi-selection combobox.</p>
<p>With proper design, multi-selection combobox can help improve user experiences in overall. Instead of using listbox that occupy larger screen real estate, multi-selection combobox allows a more intuitive and efficient way to capture multiple input through type-ahead and automatic list filtering. Considering its compact size and input efficiency, multi-selection combobox is an ideal input pattern for numerous LoB scenarios like capturing multiple roles for a user group, multiple contacts for mailing, multiple items for activation, and so forth.</p>
<p>The upcoming release of ClientUI will include the new <strong>UXMultipleSelectionComboBox</strong> – joining the advanced ClientUI data-aware component lineups. It doesn’t only come with industrial standards design, but also equipped with powerful architecture such as MVVM binding to the multiple selected items. I’ll unveil the new control entirely in this blog post. Read on.</p>
<h2>Editable Multiple Selection</h2>
<p>As with every combobox, the multi-selection combobox supports two fundamental input mode: <em>Editable</em> and <em>Non-editable</em>. Editing support with multi-selection is one of the greatest challenges in both control architecture and user experiences design. </p>
<p>First, the control needs to display the selected items and the textbox seamlessly together, while at the same time automatically enlarge the control as new items are selected. And of course, users can delete any of the selected items and the control should adapt its size back to the content.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image4.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Introducing UXMultipleSelectionComboBox" border="0" alt="Introducing UXMultipleSelectionComboBox" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb4.png" width="374" height="68"></a></p>
<p>Second, the multi-selection combobox with editing support does make sense only when the results are filtered as you type ahead. Thanks to the comprehensive ClientUI’s data framework, the server paging is supported through QueryDescriptor.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image5.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="UXMultipleSelectionComboBox with automatic server filtering" border="0" alt="UXMultipleSelectionComboBox with automatic server filtering" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb5.png" width="515" height="313"></a></p>
<p>Many of UX aspects have also been thoughtfully put on the control, mostly the editing experiences such as the Backspace or Delete key should perform different action based on the current selection (whether it’s on the textbox, on the selected item, or in an empty area). </p>
<p>Another nice feature is the <em>smart results filtering </em>feature where the selected items are automatically removed from the result list. This makes sense in most LoB scenarios as users don’t need to see the items already in the selection. See the image below.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image6.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Editable multiple selection with smart filtering" border="0" alt="Editable multiple selection with smart filtering" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb6.png" width="491" height="257"></a></p>
<h2>Non-editable Multiple Selection</h2>
<p>When the <em>IsEditable </em>property of the multi-selection control is set to false, it will automatically show checkboxes in the result list which appears to be the most convenience way for users to capture multiple input in such non-editing mode.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image7.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="UXMultipleSelectionComboBox with checkbox input" border="0" alt="UXMultipleSelectionComboBox with checkbox input" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb7.png" width="316" height="237"></a></p>
<p>And better yet, you can combine all the new features available in the data combobox lineups along with the multiple selection feature. For instances, you can enable multiple columns, paging and sorting, while continue to work perfectly with the checkbox input.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image8.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="UXMultipleSelectionComboBox works perfectly with existing features" border="0" alt="UXMultipleSelectionComboBox works perfectly with existing features" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb8.png" width="503" height="234"></a></p>
<h2>Full MVVM Support</h2>
<p>As you read up at this point, it looks like the multi-selection control has everything you need, from the appearance to the functionality. But wait, how are you going to use it in databound scenarios since the list is paged and retrieved on demand?</p>
<p>Thankfully, <strong>UXMultipleSelectionComboBox</strong> is built from the ground up to fully support implementation with MVVM pattern. This means that every items that added to the selection via <em>user interface</em> will synchronize to the <strong>SelectedItems</strong> property. And in the same way, inserting or removing the items from the <em>ViewModel</em> will also automatically update the <em>user interface</em>.</p>
<p>With MVVM support, you can easily bind the <strong>SelectedItems</strong> property of the control to a collection property in the ViewModel using two-way binding mode. This also allows you to set the initial selected items such as in form editing scenario. See the example code below.</p>
<p></p><pre class="crayon-plain-tag">&lt;Intersoft:UXMultipleSelectionComboBox 
         IsEditable="True" DisplayMemberPath="ProductName" SearchResult="{Binding Items}"
         FilterDescriptors="{Binding QueryDescriptor.FilterDescriptors, Mode=TwoWay}"
         SortDescriptors="{Binding QueryDescriptor.SortDescriptors, Mode=TwoWay}"
         PageDescriptor="{Binding QueryDescriptor.PageDescriptor}"
         CanUserPage="True" CanUserSort="True" AutoFilterSelectedItems="True"
<strong>         SelectedItems="{Binding SelectedItems, Mode=TwoWay}"
</strong>         SelectedValuePath="ProductID"&gt;

         ...

&lt;/Intersoft:UXMultipleSelectionComboBox.Columns&gt;&lt;/Intersoft:UXMultipleSelectionComboBox&gt;</pre><p></p>
<p>And the results will look like the following.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image9.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Full MVVM support in UXMultipleSelectionComboBox" border="0" alt="Full MVVM support in UXMultipleSelectionComboBox" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb9.png" width="329" height="330"></a></p>
<h2>Download ClientUI Developer Preview</h2>
<p>In this post, I’ve just scratched the surface of the new multi-selection combobox that we are going to release soon – hopefully in the next couple weeks. For now, I highly recommend you to download the latest Developer Preview to try out many of the UX aspects that I couldn’t express with words. The Developer Preview has been updated to include this new bits along with the new samples. Click <a href="http://www.intersoftpt.com/ClientUI/ClientUI_2012R1_Preview_2.zip">here</a> to download the developer preview and experience it for yourself. Enjoy and happy combo-boxing!</p>
<p>Best,<br />Jimmy Petrus</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/05/clientui-7-preview-part-4-multiple-selection-combobox-with-auto-filter-and-checkbox-input-support/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ClientUI Preview Part 3: Pageable and Multi-column ComboBox, Enhanced GridView, Items Grouping and more</title>
		<link>http://blog.intersoftsolutions.com/2012/05/clientui-preview-part-3-pageable-and-multi-column-combobox-enhanced-gridview-items-grouping-and-more/</link>
		<comments>http://blog.intersoftsolutions.com/2012/05/clientui-preview-part-3-pageable-and-multi-column-combobox-enhanced-gridview-items-grouping-and-more/#comments</comments>
		<pubDate>Fri, 04 May 2012 16:20:00 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[ClientUI]]></category>
		<category><![CDATA[CTP]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2718</guid>
		<description><![CDATA[In the last two posts, I’ve covered many of the new framework features that provide architectural guidelines for building highly extensible and maintainable business applications on Silverlight and WPF. You can check out the first post here which explains dependency injection and IoC containers, and [...]]]></description>
				<content:encoded><![CDATA[<img width="466" height="270" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/uxpageablecombobox_1_thumb1-604x350.png" class="attachment-post-thumbnail wp-post-image" alt="Introducing UXPageableComboBox for Silverlight and WPF" style="float:right; margin:0 0 10px 10px;" /><p>In the last two posts, I’ve covered many of the new framework features that provide architectural guidelines for building highly extensible and maintainable business applications on Silverlight and WPF. You can check out the first post <a href="http://intersoftpt.wordpress.com/2012/04/11/clientui-7-preview-part-1-built-in-ioc-containers/">here</a> which explains dependency injection and IoC containers, and the second post <a href="http://intersoftpt.wordpress.com/2012/05/01/clientui-7-preview-part-2-view-discovery-and-view-injection-with-region-manager/">here</a> which unveils the new ClientUI region manager library to implement view extensibility. </p>
<p>Recently, we’ve been working with a number of large clients in migrating their apps to the Silverlight platform. As I&#8217;ve mentioned in my previous posts, we can see the increasing demand of Silverlight in enterprises as it provides a <em>true rapid solution</em> for building visually engaging and highly scalable business apps. Check out our recently published Silverlight case study <a href="http://intersoftpt.com/Discover/AstraMedicore">here</a>.</p>
<p>That said, we’re focusing on creating tools that enable companies to succeed in achieving their business objectives with rock-solid and mature solutions <em>today</em> – one that enables them to complete their IT projects <em>on time</em> and <em>on budget</em>. And we’re incredibly pleased to be the part of the succession through the increasing adoption of our toolset in enterprises. </p>
<p>In this post, I’ll share some of the upcoming new exciting tools that were thoughtfully designed to address many challenges that you often find while building business apps.</p>
<h2>The very best of ASP.NET WebCombo, now on Silverlight and WPF</h2>
<p>Flashing back to a decade ago, Intersoft was founded with only a handful of products, one of them is the WebCombo control for ASP.NET. At that time, web pages are slow and unresponsive due to large view state and postback. There were no AJAX yet – so we invented the very first AJAX-enabled ComboBox with highly efficient data retrieval and blazing fast response which makes it the most popular ComboBox in the industry – till today. Of course, it has evolved over the years and you can try it online <a href="http://live.intersoftpt.com/cs/WebCombo/FirstExperience.aspx?path=/WebCombo/General&amp;noframe=1">here</a>.</p>
<p>Today, I’m very excited to announce that the highly-efficient and advanced WebCombo-like control is now available on the developers’ most loved platform: Silverlight. Meet the brand-new UXPageableComboBox.</p>
<p>The pageable ComboBox includes all the features available in the classic ASP.NET WebCombo, while sports a much appealing user interface, thanks to the rich graphics in Silverlight. Let’s start with the first sneak preview below.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Introducing UXPageableComboBox for Silverlight and WPF" border="0" alt="Introducing UXPageableComboBox for Silverlight and WPF" src="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_1_thumb.png" width="783" height="361"></a></p>
<p>Say welcome back to multiple columns, a favorite feature many of us have missed for a while… And we’ve got a bonus feature for you as well, sortable columns. Note that the multiple columns is a built-in feature now, and is not a workaround that requires heavy re-templating.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="UXPageableComboBox with Multiple Sortable Columns" border="0" alt="UXPageableComboBox with Multiple Sortable Columns" src="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_2_thumb.png" width="783" height="361"></a></p>
<p>And not to forget the image and templated columns as well.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_3.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="UXPageableComboBox Built-in Column Type" border="0" alt="UXPageableComboBox Built-in Column Type" src="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_3_thumb.png" width="783" height="452"></a></p>
<p>The pageable ComboBox includes a more sophisticated user experiences than the ASP.NET version of WebCombo in the way users make selection and navigate the items. For example, by default only the matched item is displayed when the selected item is set initially. A ‘Browse All’ button will appear providing a visual hint to users indicating they can choose other items by clicking that button, or&nbsp; by simply clearing the text.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_5.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="UXPageableComboBox combines highly-efficient data paging and intuitive user experiences" border="0" alt="UXPageableComboBox combines highly-efficient data paging and intuitive user experiences" src="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_5_thumb.png" width="783" height="452"></a></p>
<p>Another nice feature that we manage to put in this release is the watermark description in the text box. This is one of the most requested features in business apps&nbsp; particularly for the code-value pair input scenario. Think of chart-of-account code input where accountant can input the account code, but still wish to be able to see the account name at the same time. This is now possible in the new Pageable ComboBox, and the best of all – it’s a built-in feature so you don’t have to make any customizations.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_4.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Unique description watermark feature for code-description input" border="0" alt="Unique description watermark feature for code-description input" src="http://intersoftpt.files.wordpress.com/2012/05/uxpageablecombobox_4_thumb.png" width="783" height="452"></a></p>
<h2>New Powerful LoB-centric Features </h2>
<p>The upcoming new version is strongly focused on new features that were driven by real-world business scenarios and usage. One of the data components that receives major new features is UXGridView. It introduces advanced features such as columns collection binding,&nbsp; column header binding, and batch items validation.</p>
<p>In addition, we’ve also added a new rendering mode in UXGridView that allows the empty space to be filled with virtual rows. This new mode is particularly ideal when the Grid is used to display line details such as transactions. If you’ve used apps such as Quick Book, or any Mac apps, you should be already familiar with this feature.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxgridview_1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Virtual rows rendering in UXGridView" border="0" alt="Virtual rows rendering in UXGridView" src="http://intersoftpt.files.wordpress.com/2012/05/uxgridview_1_thumb.png" width="783" height="452"></a></p>
<p>As seen in the above illustration, the grid fills the remaining empty space with virtual rows instead of a blank white space. The virtual rows will grow or shrink automatically as the viewport is resized, and better yet, it works perfectly with row virtualization so you don’t have to sacrifice the rendering performance.</p>
<p>And with the empty space virtual rows, we took the grid further by introducing <em>natural inline editing experiences</em> when adding a new item. This feature activates a new row after the last item of the grid for rapid data addition. Users can simply click on the any remaining space, input the data and cycle through the last cell, and then tab out to the next new row and so forth. Activate this feature in your apps with a simple property set, guaranteed your users will thank you a million!</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxgridview_2.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="New row position at last item for rapid items addition" border="0" alt="New row position at last item for rapid items addition" src="http://intersoftpt.files.wordpress.com/2012/05/uxgridview_2_thumb.png" width="783" height="452"></a></p>
<p>Furthermore, the items control architecture has been revamped to introduce new capability such as grouping and style-able group container. This means that most of the common controls that derives from items controls such as combo box and list box now supports grouping out-of-the-box!</p>
<p>Imagine the possibilities that you can do with the grouping capability: displaying contact list grouped by type in a list box, or displaying expandable/collapsible groups within the resultbox of a combo box. Thankfully, you can now achieve all those possibilities without any major efforts.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/uxitemscontrol_grouping.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Grouping in items control made easy " border="0" alt="Grouping in items control made easy " src="http://intersoftpt.files.wordpress.com/2012/05/uxitemscontrol_grouping_thumb.png" width="783" height="452"></a></p>
<h2>Download the Developer Preview Bits</h2>
<p>I hope you enjoy reading my blog post through the detailed feature coverage. And to complete your pleasure, we’ve made the ClientUI Developer Preview available along with the technical samples. <a href="http://www.intersoftpt.com/ClientUI/ClientUI_2012R1_Preview_1.zip">Download</a> the developer preview bits today. Explore the technical samples that demonstrate the new controls and features explained above, and test drive it in your apps within minutes.</p>
<p>And by the way, I’ve just received fresh builds from our development labs as I wrapped up this post. I can tell that there are many more new exciting stuff coming down the pipeline, so watch out this spot closely.</p>
<p>Best,<br />Jimmy Petrus<br />Chief Software Architect</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/05/clientui-preview-part-3-pageable-and-multi-column-combobox-enhanced-gridview-items-grouping-and-more/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ClientUI 7 Preview Part 2: View Discovery and View Injection with Region Manager</title>
		<link>http://blog.intersoftsolutions.com/2012/05/clientui-7-preview-part-2-view-discovery-and-view-injection-with-region-manager/</link>
		<comments>http://blog.intersoftsolutions.com/2012/05/clientui-7-preview-part-2-view-discovery-and-view-injection-with-region-manager/#comments</comments>
		<pubDate>Tue, 01 May 2012 15:04:12 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[ClientUI]]></category>
		<category><![CDATA[Region Manager]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[View Discovery]]></category>
		<category><![CDATA[View Injection]]></category>
		<category><![CDATA[WebUI Studio]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2700</guid>
		<description><![CDATA[In my previous post, I’ve discussed about dependency injection and IoC container, and how the upcoming ClientUI release makes it easy for developers to build good quality software. Today I’ll continue to explore the new exciting framework-related features so you can preview these features and [...]]]></description>
				<content:encoded><![CDATA[<img width="242" height="234" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/09/image_thumb40.png" class="attachment-post-thumbnail wp-post-image" alt="Navigation list" style="float:right; margin:0 0 10px 10px;" /><p>In my <a href="http://intersoftpt.wordpress.com/2012/04/11/clientui-7-preview-part-1-built-in-ioc-containers/">previous post</a>, I’ve discussed about dependency injection and IoC container, and how the upcoming ClientUI release makes it easy for developers to build good quality software. Today I’ll continue to explore the new exciting framework-related features so you can preview these features and try them in your apps.</p>
<p>In this blog post, I’ll particularly focus on the challenges in view extensibility, and discuss the architectural patterns that can be applied to address these challenges.</p>
<h2>Understanding View Extensibility</h2>
<p>First, let’s get on the same page for the view extensibility definition. Assume that you have an application that shows a list of quick tasks such as illustrated below. </p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Navigation list" border="0" alt="Navigation list" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb.png" width="242" height="234"></a></p>
<p>Initially, your application might contain only a few modules such as Customers, Products, and Reports – then define them in the navigation list such as shown above. As you added more modules, you’d have to revisit and modify the navigation list, add the new links and so forth. There are no extensibility points.</p>
<p>In the above case, the ability to add the navigation links when new modules become available <em>without</em> modifying the original codebase is the essence of view extensibility. As you’re becoming more familiar with extensible application development, you’ll realize the real benefits in the way it accelerates your development and minimizes code changes. Not only will your application become easier to maintain and extend, you’ll find yourself building software more fun and enjoyable.</p>
<p>There are two well-known patterns to achieve view extensibility called <em>View Injection </em>and <em>View Discovery</em>. </p>
<p>View injection is a pattern that dynamically inject an element to the target at runtime. The view injection is usually done manually by the controller at a certain event, such as page load. In contrast to view injection, the view discovery pattern performs the injection automatically when the element becomes available in the application life cycle. View discovery is usually implemented with metadata (also known as attribute in .NET) to allow the view to be discovered at runtime. More details on the patterns implementation are discussed in the section below.</p>
<p>Both patterns are commonly implemented with so called Region Manager, which acts as the controller that reside in the application’s shell. A region manager can consist of multiple regions which represent the target placeholder for injection. A well-known library that already provide region manager functionality is <a href="http://msdn.microsoft.com/en-us/library/ff921153%28v=pandp.40%29.aspx">Prism</a> from Microsoft, which does the job well but with several limitations.</p>
<p>At a glance, the following illustration shows how the view injection/discovery works together with region manager.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/viewinjection.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="View Injection v.s. View Discovery" border="0" alt="View Injection v.s. View Discovery" src="http://intersoftpt.files.wordpress.com/2012/05/viewinjection_thumb.png" width="642" height="371"></a></p>
<h2>Page-aware Region Manager</h2>
<p>As I mentioned earlier, Prism provides several functionality related to region manager. I won’t discuss Prism’s region manager concept in details here, but would like to point out the general principles and overview its differences with ClientUI’s region manager.</p>
<p>Prism’s region manager is built around the concept that centralizes on shell (also known as Root View). This means that you will normally define the region manager in the shell, and define the regions within the shell as well. See the following picture for more details.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/regionprism.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Region in Prism" border="0" alt="Region in Prism" src="http://intersoftpt.files.wordpress.com/2012/05/regionprism_thumb.png" width="642" height="405"></a></p>
<p>While this single region manager concept works well in common scenarios, it falls short on certain scenarios such as multi-page applications. You cannot define the regions within the shell in multi-page application, because the view/content is defined in separate pages, not in the shell. There might be several ways to workaround this using the existing library but that would be less-than-ideal due to the extensive additional code.</p>
<p>With multi-page applications in mind, we built our own region manager to facilitate view extensibility supporting both view injection and view discovery methods. The page-aware region manager is perhaps the most interesting feature in ClientUI’s view extensibility design.</p>
<p>It enables you to simply define the region manager and the associated regions in the pages without needing to know when the regions need to be instantiated or activated. When the page is activated (either through browser journal navigation or navigation link), the defined regions in the page will be automatically filled with the injected view content. This allows view extensibility to be achieved with <em>loose coupling</em> approach. </p>
<p>The following illustration shows the region manager concept implemented in ClientUI.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/regionclientui.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Region in ClientUI" border="0" alt="Region in ClientUI" src="http://intersoftpt.files.wordpress.com/2012/05/regionclientui_thumb.png" width="642" height="405"></a></p>
<p>With page-aware design, our goal is to make modular application development easier and more maintainable. It allows you to simply define the region scope and the regions in each page without concerning when to instantiate or disposing the regions – the framework does it all for you behind the scene.</p>
<h3>Implementing View Injection</h3>
<p>Now that you’ve got the idea what region manager is about, let’s go further and see how to implement the view injection in ClientUI.</p>
<p>First of all, you define the region manager and regions to the containers that will participate in the view extensibility. The containers can be a simple content control, items control, tab controls, window controls – or any control types that serve as containers.</p>
<p></p><pre class="crayon-plain-tag">&lt;Intersoft:UXPage 
        <strong>Intersoft:RegionManager.IsRegionScope</strong>="True" 
        <strong>Intersoft:RegionManager.ScopeName</strong>="Home"&gt;

    ...

    &lt;Intersoft:GroupBox Header="Quick Tasks"&gt;
        &lt;Intersoft:UXItemsControl <strong>Intersoft:Region.RegionName</strong>="QuickTasks"&gt;
            &lt;Intersoft:UXHyperlinkButton Content="View Top Customers"/&gt;
            &lt;Intersoft:UXHyperlinkButton Content="Manage Products"/&gt;
            ...
        &lt;/Intersoft:UXItemsControl&gt;
    &lt;/Intersoft:GroupBox&gt;

&lt;/Intersoft:UXPage&gt;</pre><p></p>
<p>The example above shows the region manager and scope definition in the UXPage, followed with the region definition for the target container which is the UXItemsControl in this example.</p>
<p>Once the regions are defined, you can now access to these regions using the region manager API. This allows you to instantiate the view element and inject it to the target region from either code behind or ViewModel. Often times, you might want to do the injection in the bootstrapper where the application module is first loaded. Here’s an example.</p>
<p></p><pre class="crayon-plain-tag">public class AppInitializer : IApplicationInitializer
    {

        #region IApplicationInitializer Members

        public void Initialize(ApplicationPackage package)
        {
            // add new links to the Quick Tasks region on-demand ("view injection") when this XAP is loaded
            RegionManager manager = RegionManagerService.FindRegionManager("Home") as RegionManager;

            manager.AddViewToRegion("QuickTasks",
                new UXHyperlinkButton()
                {
                    Content = "New Link 1",
                    Foreground = new SolidColorBrush(Colors.Red)
                });

            manager.AddViewToRegion("QuickTasks",
                new UXHyperlinkButton()
                {
                    Content = "New Link 2",
                    Foreground = new SolidColorBrush(Colors.Red)
                });
        }

        #endregion
    }</pre><p></p>
<p>As the results, when the XAP is loaded, notice that the new hyperlinks will be added to the Quick Tasks control which can be seen in the following illustration.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="View Injection" border="0" alt="View Injection" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb1.png" width="240" height="266"></a></p>
<h3>Implementing View Discovery</h3>
<p>Similar to the view injection, you always need to define the region manager and regions in the views that will be extended.</p>
<p>The difference with the view injection is that you don’t write code to inject the element to the target region. Instead, you simply add decorator attributes to the class that will be injected to the target region. When the target region is loaded, it will discover all views that should be injected based on the metadata, hence the injection is processed seamlessly and automatically.</p>
<p>Here’s an example of the view discovery implementation.</p>
<p></p><pre class="crayon-plain-tag"><strong>[ViewPart("Home", "Overview")]</strong>
    public partial class Overview : UserControl
    {
        public Overview()
        {
            InitializeComponent();
        }
    }</pre><p></p>
<p>The <em>ViewPart</em> attribute above basically states that the <em>Overview</em> class should participate in the view discovery process which target the <em>Home </em>region scope and <em>Overview </em>region.</p>
<p>And here’s the screenshot that shows the application before and after the view is discovered.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/viewdiscovery.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="View Discovery" border="0" alt="View Discovery" src="http://intersoftpt.files.wordpress.com/2012/05/viewdiscovery_thumb.png" width="802" height="557"></a></p>
<p>Comparing both view extensibility approaches, it’s obvious that the view discovery is the easiest and most efficient way to achieve the view extensibility goal. I’d recommend to use view discovery pattern whenever possible, unless you need to inject the view based on certain conditions or complex business logics.</p>
<h3>More Advanced Features</h3>
<p>Of course, we’ve only seen the basics of the view extensibility so far. The region manager in ClientUI also provides many advanced features that I couldn’t share in this single post alone. These advanced features include:</p>
<ul>
<li>Custom region adapter which enables you to extend the region manager service to your own containers
<li>Selection control support
<li>View activation support
<li>Integration with Navigation Framework</li>
</ul>
<h2>Download Sample Code</h2>
<p>At this point, you have learnt the basics of view extensibility and how you can implement it using the API available in the next version of ClientUI. The view extensibility can be very useful if you build applications that allow third-party developers to create add-ons on top of your standard functionality. For an instance, consider a standard customer form shown in the screenshot below.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image2.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Existing form" border="0" alt="Existing form" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb2.png" width="642" height="434"></a></p>
<p>With view extensibility, third-party developers can extend the existing form by adding new view elements without changing or even recompiling the original apps, see the below illustration.</p>
<p><a href="http://intersoftpt.files.wordpress.com/2012/05/image3.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Extended form" border="0" alt="Extended form" src="http://intersoftpt.files.wordpress.com/2012/05/image_thumb3.png" width="642" height="435"></a></p>
<p>To preview these new exciting features, we’ve created a complete SDK sample that demonstrates the view injection and view discovery implementation using ClientUI preview builds. The sample also demonstrates how IoC container can be used along with region manager to facilitate really powerful extension capability to your apps. You can download the reference sample <a href="http://www.intersoftpt.com/ClientUI/ClientUI_DI_Region.zip">here</a>.</p>
<p>In the next series of my blog post, I will do some previews on the upcoming new UI controls and top-requested enhancements. Stay tuned!</p>
<p>Best,<br />Jimmy</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/05/clientui-7-preview-part-2-view-discovery-and-view-injection-with-region-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ClientUI 7 Preview Part 1: Built-in IoC Containers</title>
		<link>http://blog.intersoftsolutions.com/2012/04/clientui-7-preview-part-1-built-in-ioc-containers/</link>
		<comments>http://blog.intersoftsolutions.com/2012/04/clientui-7-preview-part-1-built-in-ioc-containers/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 04:32:01 +0000</pubDate>
		<dc:creator><![CDATA[Jimmy Petrus]]></dc:creator>
				<category><![CDATA[2012 R1]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Application Framework]]></category>
		<category><![CDATA[ClientUI]]></category>
		<category><![CDATA[Dependency Injection]]></category>
		<category><![CDATA[Inversion of Control]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://intersoftpt.wordpress.com/?p=2606</guid>
		<description><![CDATA[Since its debut two years ago, ClientUI has been designed to facilitate application development toward loose coupling approach. This can be seen from the comprehensive MVVM-ready components and application framework included in ClientUI, then followed with the introduction of Event Aggregator in the latter release. [...]]]></description>
				<content:encoded><![CDATA[<img width="436" height="250" src="http://blog.intersoftsolutions.com/wp-content/uploads/2014/08/banner-blog-clientui-436x270.jpg" class="attachment-post-thumbnail wp-post-image" alt="banner-blog-clientui-436x270" style="float:right; margin:0 0 10px 10px;" /><p>Since its debut two years ago, <a href="http://www.clientui.com" target="_blank">ClientUI</a> has been designed to facilitate application development toward <em>loose coupling </em>approach. This can be seen from the comprehensive MVVM-ready components and application framework included in ClientUI, then followed with the introduction of <a href="http://intersoftpt.wordpress.com/2011/07/06/introducing-event-aggregator-in-clientui-5-sp1/" target="_blank">Event Aggregator</a> in the latter release. In addition, most of our samples and tutorials are built with the <a href="http://intersoftpt.wordpress.com/2010/04/24/clientui-part-3-comprehensive-mvvm-framework-for-silverlight-development/" target="_blank">MVVM</a> design pattern as well. In the upcoming releases, we’ll take the design pattern to the next level by introducing a lightweight IoC container which is integrated to many important aspects of the ClientUI application framework.</p>
<p>In this blog post, I’m excited to share what ClientUI has to offer in the next major release. I will focus on the framework enhancements and new advanced library specifically designed to enable you write maintainable code with maximum loose coupling. Before I introduce these new libraries, I’ll discuss the basic purposes of the <em>loose coupling </em>design pattern, so you can see what the new library does, and how it addresses the programming challenges.</p>
<h2>Dependency Injection Demystified</h2>
<p>Unless you write prototypes or applications that never make it past release 1, you’ll<br />
soon find yourself maintaining and extending existing code bases. To be able to work<br />
effectively with such a code base, it must be as maintainable as possible. One of many ways to make code maintainable is through <em>loose coupling</em>. In short, the main point is that <em>loose coupling </em>makes code extensible, and extensibility makes it maintainable.</p>
<p>One of many techniques to enable loose coupling is Dependency Injection (often called as DI). A lot have been said and written about DI these days – it’s fascinating how most of these literatures make DI sound so complicated, yet it’s really simple in reality. Powerful yet simple. In this blog post, I hope to be able to give a decent and clear explanation about DI and its main concept, and how it differs from <em>Inversion of Control</em> (IoC).</p>
<p>Let’s dive in. Assume you run a new business that started using PayPal as your payment provider. Naturally, you’ll create a website that processes the transactions online, hence the following code.</p><pre class="crayon-plain-tag">public class MyStore
{
    public bool ProcessTransaction(Transaction trans)
    {
        PayPalPaymentProcessor paymentProcessor = new PayPalPaymentProcessor();
        return paymentProcessor.ProcessPayment(trans);
    }
}</pre><p>The code above is very simple and straightforward, and does the job pretty well. First, it instantiates a new PayPalPaymentProcessor class and then call the ProcessPayment method. Nothing’s wrong.</p>
<p>As your business grows, you’d like to switch to different payment processor (or add a new option), let’s pick Google Checkout as an example. To make this happen, it’s obvious that you’ll have to find the piece of code that processes the transaction, modify the code to introduce the new payment option and rebuild your project. You’ll probably come up with the following results.</p><pre class="crayon-plain-tag">public class MyStore
{
    public bool ProcessTransaction(string type, Transaction trans)
    {
        if (type == "PayPal")
        {
            PayPalPaymentProcessor paymentProcessor = new PayPalPaymentProcessor();
            return paymentProcessor.ProcessPayment(trans);
        }
        else if (type == "Google")
        {
            GooglePaymentProcessor paymentProcessor = new GooglePaymentProcessor();
            return paymentProcessor.ProcessPayment(trans);
        }
        else
        {
            throw new ArgumentException("Payment processor not supported", "type");
        }
    }
}</pre><p>Again, there’s nothing wrong with the code above as it does the job pretty well. However, doing the job well doesn’t always mean it has met the requirements to build good applications, for instances, in terms of maintainability and extensibility. In the case above, the code wasn’t really maintainable as you have to repetitively make changes on the same piece of code when you add new payment processors. This, naturally, makes your application more difficult to extend, not to mention if you want to hand over the code to be maintained by different developers.</p>
<p>Architecturally, the main problem with the code above is the referenced dependencies where the <em>MyStore </em>class depends on the concrete payment processor class such as <em>PayPalPaymentProcessor</em> or <em>GooglePaymentProcessor</em>. The concrete type dependency makes it impossible for you to plug-in new payment processors without modifying the code. So what we’re going to do next is take out the dependencies and revamp our code into the following.</p><pre class="crayon-plain-tag">public class MyStore
{
    public MyStore(IPaymentProcessor paymentProcessor)
    {
        if (paymentProcessor == null)
            throw new ArgumentNullException("paymentProcessor");

        this.PaymentProcessor = paymentProcessor;
    }

    public bool ProcessTransaction(Transaction transaction)
    {
        return this.PaymentProcessor.ProcessPayment(transaction);
    }

    protected IPaymentProcessor PaymentProcessor { get; set; }
}</pre><p>Now what do you think? Looks much neater and easier to read, isn’t it? In the code above, the dependencies to the concrete types have been eliminated and replaced by the <em>interface abstraction </em>of the payment processor. The MyStore class now requires the payment processor to be passed in the constructor, which is a common technique known as <em>constructor injection</em> while the Guard in the constructor ensures a valid instance of payment processor is passed, thus ensuring the availability of the payment processor when consumed throughout the methods in the class. Ultimately, this resolution also addresses the extensibility issue as you can now instantiate the payment service externally and simply pass-in the instance.</p>
<p>In essence, the technique of passing (or injecting) the instance (PaymentProcessor) on to the depending class (MyStore) class is called <em>Dependency Injection</em>.</p>
<p>As we’ve just demystified the DI concept, it’s now becoming clear that DI has nothing to do with Inversion of Control (IoC) or any other programming frameworks, although in reality, both are often paired together to achieve the ultimate design goal – “Loose Coupling”.</p>
<p>At this point, still using the payment service scenario above, you will likely consume the MyStore class by instantiating it through manual construction. At the simplest, the code will look like:</p><pre class="crayon-plain-tag">public class MainPageViewModel : ViewModelBase
{
    private void ExecuteProcess()
    {
        MyStore myStore = new MyStore(new PayPalPaymentProcessor());
        myStore.ProcessTransaction(transaction);
    }
}</pre><p>While the code above is much neater and easier to read, there’s still one last problem that violates the law of <em>loose coupling </em>design pattern. Without you realizing it, the MainPageViewModel class (the consumer) now depends on two classes: MyStore and PayPalPaymentProcessor.</p>
<p>Eliminating the dependencies completely in such scenario can be achieved by <em>inverting </em>the flow of control of the system in a way where the objects and its dependency graphs can be instantiated through an external assembler. This technique is called <a href="http://en.wikipedia.org/wiki/Inversion_of_control" target="_blank">Inversion of Control</a> (further abbreviated as IoC), and that’s where the IoC containers comes into the picture.</p>
<h2>IoC Container Comes to the Rescue</h2>
<p>IoC is a design pattern that inverts the flow of the application logic, which is achieved through the use of <em>Dependency Injection</em> for its binding process. This approach allows maximum <em>loose coupling</em> where dependencies can be minimized or completely eliminated. This also means that such code allows great extensibility as the concrete implementation can be easily swapped at runtime.</p>
<p>The payment service scenario earlier with the state where it left off is perfectly ideal for our IoC example, so let’s move on revamping our code and see what IoC container has to offer, see the following code.</p><pre class="crayon-plain-tag">public class MainPageViewModel : ViewModelBase
{
    private void ExecuteProcess()
    {
        IStore store = Container.Resolve&lt;IStore&gt;();
        store.ProcessTransaction(transaction);
    }
}</pre><p>To remove dependencies on concrete implementation, one of the common approaches is by abstracting the implementation into abstract class or interface, as shown in the code above. Leveraging IoC container in this piece of code enables us to resolve an instance of the concrete store implementation – anywhere and anytime when required in the business logic flow – without knowing the exact type that contains concrete implementation. This is so powerful because it allows you to change the concrete implementation externally without ever touching this piece of code.</p>
<p>At the heart of IoC container are the Register and Resolve methods, which perform the following:</p>
<ul>
<li>Register: Register a dependency by associating the abstract type or interface to the concrete type</li>
<li>Resolve: Resolve an instance of the dependency by looking up the exact registration in the container</li>
</ul>
<p>Most of the dependency registrations are usually done in a centralized place, commonly invoked when the program initializes. This centralized place is called <em>Composition Root</em>, which allows you to manage the composition of all components and services in a single place. Using the payment service scenario above, the registration looks like the following.</p><pre class="crayon-plain-tag">public class AppInitializer : IApplicationInitializer
{
    public void Initialize(ApplicationPackage package)
    {
        IDependencyContainer container = UXShell.Current.Container; // or new IocContainer() for standalone container;

        // Register the IStore interface to compose a new PayPalPaymentProcessor through a direct construction
        container.Register&lt;IStore&gt;(o =&gt; new MyStore(new PayPalPaymentProcessor()));
    }
}</pre><p>The code above is self explanatory – it registers the <em>IStore</em> interface type to a function that returns a new <span style="text-decoration: underline;"><em>MyStore</em></span> class complete with the required dependencies which is the <em>PayPalPaymentProvider</em> in this case.</p>
<p>The IoC container along with a set of comprehensive APIs are the new libraries introduced in next major release of ClientUI. It features full-blown IoC container features yet lightweight enough to deliver high-performing and scalable applications. At a glance, the key features are:</p>
<ul>
<li>High-performance object factory</li>
<li>Abstract and interface type resolution</li>
<li>Open generic support</li>
<li>Instance-based resolution</li>
<li>Lazy resolution</li>
<li>Named containers</li>
<li>Lifetime Manager</li>
</ul>
<h2>Integration with ClientUI Application Framework</h2>
<p>The IoC container implemented in the ClientUI Framework supports both standalone usage and integration with UXShell. For most common scenarios, it’s recommended that you use the default container instance which is accessible from the shell’s RootApplication.Container property. Using this approach enables you to resolve the registered dependencies anywhere in your code, including the dynamic XAP applications that are loaded on demand at runtime. Click <a href="http://www.intersoftpt.com/Support/ClientUI/Docs/ApplicationFrameworkOverview.html" target="_blank">here</a> to learn more about ClientUI Application Framework.</p>
<p>In addition, the application framework now introduces a built-in bootstrapper to facilitate the dependencies composition and registration. Simply add a class that implements <em>IApplicationInitializer</em> interface in your Silverlight project, the <em>Initialize</em> method will be invoked as the application starts. In dynamic XAP scenario, the <em>Initialize</em> method will be automatically invoked when the XAP package is downloaded and loaded to the application domain.</p>
<h2>Download Sample Code</h2>
<p>In summary, the combination of design pattern best practices – such as MVVM, Event Aggregator, Dependency Injection and Inversion of Control – along with extensible application framework enable you to build great business applications that are easily maintainable and extensible. We see this as important milestones in our development roadmap as we geared our tools toward enterprise and line-of-business apps.</p>
<p>Another important point to keep in mind is that these design patterns aren’t exclusive only for Silverlight or WPF platforms although I picked Silverlight for the samples. We will bring forward these patterns to new platforms as they become available.</p>
<p>To test drive the DI concept and IoC container, I’ve prepared a small Silverlight sample that demonstrates how to achieve good architectural design by implementing Inversion of Control through Dependency Injection. The download package also includes the developer preview version of ClientUI Framework. Click <a href="http://www.intersoftpt.com/ClientUI/ClientUI_Ioc.zip" target="_blank">here</a> to download the sample package, and feel free to ask any questions or provide feedback in the comment box below.</p>
<p>In the next series of my blog post, I’ll discuss about several interesting new stuff such as View Regions, View Discovery and View Injection – and how they play well with IoC containers. Stay tuned.</p>
<p>Warning: Do not use the preview Framework assembly in your “live” projects as it will cause version incompatibility issues with the other assemblies in the current release.</p>
<p>All the best,<br />
Jimmy<br />
Chief Software Architect</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.intersoftsolutions.com/2012/04/clientui-7-preview-part-1-built-in-ioc-containers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
