<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.windowsclient.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Cristian Ricciolo Civera</title><subtitle type="html">Windows Presentation Foundation, C++ CLI, LINQ and experiments</subtitle><id>http://blogs.windowsclient.net/ricciolocristian/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.windowsclient.net/ricciolocristian/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20423.869">Community Server</generator><updated>2008-02-16T13:38:00Z</updated><entry><title>Lambda Expression into XAML markup</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/11/11/lambda-expression-into-xaml-markup.aspx" /><id>http://blogs.windowsclient.net/ricciolocristian/archive/2008/11/11/lambda-expression-into-xaml-markup.aspx</id><published>2008-11-11T16:35:59Z</published><updated>2008-11-11T16:35:59Z</updated><content type="html">&lt;p&gt;When I write markup I often need an &lt;strong&gt;IValueConverter&lt;/strong&gt; for a Binding and usually the code implementation is small and easy. So, to resolve this typical need I thought that should be useful include small c# expression into the markup.&lt;/p&gt;  &lt;p&gt;So I developed a MarkupExtension, called &lt;strong&gt;ExpressionExtension&lt;/strong&gt; that evaluate expression during markup analyzes in order to return value to the target property. To parse the expression I used the DynamicLinq sample of SDK 3.5 which contains an useful &lt;strong&gt;DynamicExpression.ParseLambda&lt;/strong&gt; method to obtain a &lt;strong&gt;LambdaExpression&lt;/strong&gt; from a string. Moreover, evaluating the target property, if this is a IValueConverter, I automatically create a class, implementing the interface, that takes the delegate to convert value for a Binding. This code is compiled so is as fast as a normal c# code.&lt;/p&gt;  &lt;p&gt;This is a partial code to understand the functionality:&lt;/p&gt;  &lt;div class="code"&gt;&lt;font color="#006400"&gt;// Normal expression to evaluate immediately     &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;LambdaExpression&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;le&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;DynamicExpression.ParseLambda&amp;lt;ExpressionDelegate&amp;gt;(&lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ParameterExpression[]&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;Expression.Parameter(&lt;/font&gt;&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;target&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;},&lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;font color="#000000"&gt;.ConvertExpression,&lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ExpressionDelegate&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;converter&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;(ExpressionDelegate)le.Compile()&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;converter(provideValueTarget.TargetProperty)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt; &lt;/div&gt;  &lt;p&gt;Here how you can use this new MarkupExtension:&lt;/p&gt;  &lt;div class="code"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;TextBox&lt;/font&gt;&lt;font color="#ff0000"&gt; x:Name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;txt&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;Testo&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;     &lt;br /&gt;      &lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;TextBlock     &lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160; Text&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;{Binding Path=Text,ElementName=txt,     &lt;br /&gt;&amp;#160; Converter={m:Expression value.ToString().ToUpper(culture)}}&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;     &lt;br /&gt;      &lt;br /&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;TextBlock&lt;/font&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;{m:Expression DateTime.Now.ToShortDateString()}&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/font&gt; &lt;/div&gt;  &lt;div class="code"&gt;&amp;#160;&lt;/div&gt;  &lt;div class="code"&gt;&lt;a href="http://blogs.aspitalia.com/img/Ricciolo/WPFExpression.zip" target="_blank"&gt;Here&lt;/a&gt; you can find the sample and source code.&lt;/div&gt;  &lt;div class="code"&gt;&amp;#160;&lt;/div&gt;  &lt;div class="code"&gt;In XAML 2009 there&amp;#39;s a special syntax that will allows to use expression: Text=&amp;quot;[DateTime.Now.ToShortDateString()]&amp;quot;&lt;/div&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=79970" width="1" height="1"&gt;</content><author><name>RiccioloCristian</name><uri>http://blogs.windowsclient.net/members/RiccioloCristian.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/WPF/default.aspx" /></entry><entry><title>StylesExplorer on CodePlex</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/11/09/stylesexplorer-on-codeplex.aspx" /><id>http://blogs.windowsclient.net/ricciolocristian/archive/2008/11/09/stylesexplorer-on-codeplex.aspx</id><published>2008-11-09T15:11:55Z</published><updated>2008-11-09T15:11:55Z</updated><content type="html">&lt;p&gt;Due many requests for &lt;a href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/04/05/styles-explorer-baml-decompiler.aspx" target="_blank"&gt;StylesExplorer&lt;/a&gt; code I just publishes my project on CodePlex:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/stylesexplorer" href="http://www.codeplex.com/stylesexplorer"&gt;http://www.codeplex.com/stylesexplorer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It contains both &lt;a href="http://www.codeplex.com/stylesexplorer/Release/ProjectReleases.aspx?ReleaseId=19066" target="_blank"&gt;library&lt;/a&gt; for baml decompilation and the &lt;a href="http://www.codeplex.com/stylesexplorer/Release/ProjectReleases.aspx?ReleaseId=19067" target="_blank"&gt;tool&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;However &lt;a href="http://blogs.windowsclient.net/rob_relyea/" target="_blank"&gt;Rob&lt;/a&gt; at pdc spoke about XAML 2009 and there are many new features such class to load baml/xaml so I thinks in the future to replace my library by System.Xaml.dll and work only on the tool.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=79951" width="1" height="1"&gt;</content><author><name>RiccioloCristian</name><uri>http://blogs.windowsclient.net/members/RiccioloCristian.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/WPF/default.aspx" /></entry><entry><title>(Real) Force theme on WPF</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/11/07/real-force-theme-on-wpf.aspx" /><id>http://blogs.windowsclient.net/ricciolocristian/archive/2008/11/07/real-force-theme-on-wpf.aspx</id><published>2008-11-07T15:01:46Z</published><updated>2008-11-07T15:01:46Z</updated><content type="html">&lt;p&gt;When I develop custom control for WPF that supports theming I need to force the engine to load the right resource instead of my Windows Vista theme.&amp;#160; There are some tricks on the web that does is merging the the resources for a specific theme but this works only for default WPF controls.&lt;/p&gt;  &lt;p&gt;Here you are a snippet to force a specific theme. It uses reflection so use it only for development purpose:&lt;/p&gt;  &lt;div class="code"&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;App()&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#006400"&gt;//ForceTheme(&amp;quot;Luna&amp;quot;, &amp;quot;NormalColor&amp;quot;);&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#006400"&gt;//ForceTheme(&amp;quot;Luna&amp;quot;, &amp;quot;Homestead&amp;quot;);&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#006400"&gt;//ForceTheme(&amp;quot;Luna&amp;quot;, &amp;quot;Metallic&amp;quot;);&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#006400"&gt;//ForceTheme(&amp;quot;Aero&amp;quot;, &amp;quot;NormalColor&amp;quot;);&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#006400"&gt;//ForceTheme(&amp;quot;Generic&amp;quot;, &amp;quot;&amp;quot;);&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;/div&gt;  &lt;div class="code"&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;static&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ForceTheme(&lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;themeName,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;themeColor)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#006400"&gt;// To force a particular style&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#2b91af"&gt;Type&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;t&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;Type&lt;/font&gt;&lt;font color="#000000"&gt;.GetType(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;MS.Win32.UxThemeWrapper, PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;FieldInfo&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;themeNameField&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;t.GetField(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;_themeName&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;BindingFlags.NonPublic&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;|&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;BindingFlags.Static)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;themeNameField.SetValue(&lt;/font&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;themeName)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;FieldInfo&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;themeColorField&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;t.GetField(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;_themeColor&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;BindingFlags.NonPublic&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;|&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;BindingFlags.Static)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;themeColorField.SetValue(&lt;/font&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;themeColor)&lt;/font&gt;&lt;font color="#0000ff"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt; &lt;/div&gt;  &lt;div class="code"&gt;&amp;#160;&lt;/div&gt;  &lt;div class="code"&gt;Enjoy! :-)&lt;/div&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=79945" width="1" height="1"&gt;</content><author><name>RiccioloCristian</name><uri>http://blogs.windowsclient.net/members/RiccioloCristian.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/WPF/default.aspx" /><category term="Controls" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/Controls/default.aspx" /></entry><entry><title>Styles Explorer: BAML decompiler</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/04/05/styles-explorer-baml-decompiler.aspx" /><id>http://blogs.windowsclient.net/ricciolocristian/archive/2008/04/05/styles-explorer-baml-decompiler.aspx</id><published>2008-04-04T22:33:00Z</published><updated>2008-04-04T22:33:00Z</updated><content type="html">&lt;p&gt;Since the summer I have studied how &lt;strong&gt;XAML&lt;/strong&gt; markup is &amp;quot;compiled&amp;quot; to produce &lt;strong&gt;BAML&lt;/strong&gt; stream included as resource into the .NET assemblies. So, during free time, I have developed an XmlReader implementation that allow to&amp;nbsp;decompile BAML stream&amp;nbsp;and read it as&amp;nbsp;an XML.&lt;br /&gt;I have also developed a tool called &lt;strong&gt;Styles Explorer&lt;/strong&gt; allowing to open an application or an assembly. For each file you can see the resources and decompile them, or you can explore ResourceDictionary and preview its children.&lt;/p&gt;
&lt;p&gt;Here a video showing its usage:&lt;/p&gt;
&lt;p&gt;&lt;a title="Styles Explorer" href="http://video.msn.com/video.aspx?vid=184a6290-13ec-4aa3-8c37-51e85d430303" target="_new"&gt;&lt;img title="Styles Explorer" style="WIDTH:400px;HEIGHT:300px;" height="300" alt="Styles Explorer" src="http://img3.catalog.video.msn.com/Image.aspx?uuid=184a6290-13ec-4aa3-8c37-51e85d430303&amp;amp;w=400&amp;amp;h=300" width="400" border="0" /&gt;&lt;br /&gt;Styles Explorer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can install and try it through &lt;a class="" href="http://ricciolo.lab.aspitalia.com/StylesExplorer/Ricciolo.StylesExplorer.application"&gt;ClickOnce&lt;/a&gt;&amp;nbsp;(.NET Framework 3.5 required). Hope this is useful to you and&amp;nbsp;I will try to improve and maintain&amp;nbsp;Styles Expolorer, so please send to &lt;a class="" href="mailto:cristian@aspitalia.com"&gt;me&lt;/a&gt;&amp;nbsp;requests and bugs.&lt;/p&gt;
&lt;p&gt;In the future I will explain how BAML is structured.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=20692" width="1" height="1"&gt;</content><author><name>RiccioloCristian</name><uri>http://blogs.windowsclient.net/members/RiccioloCristian.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/WPF/default.aspx" /></entry><entry><title>A complete WPF TreeListView control</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/03/22/a-complete-wpf-treelistview-control.aspx" /><id>http://blogs.windowsclient.net/ricciolocristian/archive/2008/03/22/a-complete-wpf-treelistview-control.aspx</id><published>2008-03-22T12:42:00Z</published><updated>2008-03-22T12:42:00Z</updated><content type="html">&lt;p&gt;Yes, I know, there already is a &lt;strong&gt;TreeListView&lt;/strong&gt; control in the SDK, but it&amp;#39;s simple and it isn&amp;#39;t complete, so I developed a my custom control working on .NET Fx 3.0/3.5. It supports template, binding, scrolling and themes (classic, aero, luna). It&amp;#39;s quite simple to use:&lt;/p&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;
&lt;p&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;r&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;TreeListView&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; ItemsSource&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;{&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;Binding&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; Source&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;={&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;StaticResource&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; data&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;},&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt;XPath&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;/&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;opml&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;/&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;body&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;/&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;outline&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;/&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;outline}&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; ItemTemplate&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;{&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;StaticResource&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; dt&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;}&amp;quot;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;r&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;TreeListView.Columns&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;GridViewColumn&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; Header&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;Title&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; DisplayMemberBinding&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;{&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;Binding&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; XPath&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;@&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;title}&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; Width&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;150&amp;quot; /&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;GridViewColumn&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; Header&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;Childs&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; DisplayMemberBinding&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;{&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;Binding&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; XPath&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;@&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;count}&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; Width&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;GridViewColumn&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; Header&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;Url&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; DisplayMemberBinding&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;{&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;Binding&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; XPath&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="1"&gt;@&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;xmlUrl}&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="1"&gt;&lt;font color="#ff0000" size="1"&gt; Width&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;=&amp;quot;200&amp;quot; /&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;r&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;TreeListView.Columns&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;r&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="1"&gt;&lt;font color="#a31515" size="1"&gt;TreeListView&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="1"&gt;&lt;font color="#0000ff" size="1"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;And below a&amp;nbsp;screenshot of the control in action:&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH:575px;HEIGHT:418px;" height="418" src="http://blogs.aspitalia.com/img/Ricciolo/TreeListView.gif" width="575" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The control inherits from &lt;strong&gt;TreeView&lt;/strong&gt; and &lt;strong&gt;TreeViewItem&lt;/strong&gt;&amp;nbsp;classes and uses a custom converter to indent items. The most of work is into the xaml files, built copying markup from original TreeView and ListView styles.&lt;br /&gt;I used this control into my project &lt;a class="" href="http://www.codeplex.com/paperboy/"&gt;PaperBoy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I hope&amp;nbsp;you find&amp;nbsp;useful :-).&amp;nbsp;&lt;a class="" href="http://lab.aspitalia.com/ricciolo/downloads/treelistview.zip?lab=46&amp;amp;lang=eng"&gt;Download&lt;/a&gt; full source control.&lt;font color="#2b91af" size="3"&gt;&lt;font color="#2b91af" size="3"&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=18767" width="1" height="1"&gt;</content><author><name>RiccioloCristian</name><uri>http://blogs.windowsclient.net/members/RiccioloCristian.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/WPF/default.aspx" /><category term="Custom element" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/Custom+element/default.aspx" /><category term="Controls" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/Controls/default.aspx" /></entry><entry><title>WPF AdvancedListBox for Zune effect</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/03/17/wpf-advancedlistbox-for-zune-effect.aspx" /><id>http://blogs.windowsclient.net/ricciolocristian/archive/2008/03/17/wpf-advancedlistbox-for-zune-effect.aspx</id><published>2008-03-17T19:08:00Z</published><updated>2008-03-17T19:08:00Z</updated><content type="html">&lt;p&gt;I like WPF very much and I often prepare some controls for my applications. This time I want to show a simple control extension added to ListBox. Its name is AdvancedListBox that uses custom ListBoxItem and it exposes some properties to know if ListBox is loosing or capturing&amp;nbsp;the selection.&lt;/p&gt;
&lt;p&gt;Using style I have created a sample that simulates Zune navigation effect: a background animation from previous to next selection. Here the result:&lt;/p&gt;
&lt;p&gt;&lt;a title="WPF AdvancedListBox" href="http://video.msn.com/video.aspx?vid=13eb4c7c-abd2-441f-a86c-e3ded1ee22e2" target="_new"&gt;&lt;img title="WPF AdvancedListBox" alt="WPF AdvancedListBox" src="http://img4.catalog.video.msn.com/Image.aspx?uuid=13eb4c7c-abd2-441f-a86c-e3ded1ee22e2&amp;amp;w=500&amp;amp;h=375" border="0" /&gt;&lt;br /&gt;WPF AdvancedListBox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And &lt;a class="" href="http://lab.ricciolo.aspitalia.com/downloads/Ricciolo.controls.advancedlistbox.zip?lab=52&amp;amp;lang=en"&gt;here&lt;/a&gt; the source.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=18034" width="1" height="1"&gt;</content><author><name>RiccioloCristian</name><uri>http://blogs.windowsclient.net/members/RiccioloCristian.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/WPF/default.aspx" /><category term="Controls" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/Controls/default.aspx" /></entry><entry><title>Audio spectrum using WPF and C++ CLI</title><link rel="alternate" type="text/html" href="http://blogs.windowsclient.net/ricciolocristian/archive/2008/02/16/audio-spectrum-using-wpf-and-c-cli.aspx" /><id>http://blogs.windowsclient.net/ricciolocristian/archive/2008/02/16/audio-spectrum-using-wpf-and-c-cli.aspx</id><published>2008-02-16T12:38:00Z</published><updated>2008-02-16T12:38:00Z</updated><content type="html">&lt;p&gt;Hi! this is my first post and I want to begin to tell you about my&amp;nbsp;experiences and experiments regard .NET world.&lt;/p&gt;
&lt;p&gt;There is a feature that lots of applications and sites miss. I&amp;#39;m talking about the audio spectrum, sometime built by fake bars that don&amp;#39;t follow the music. So I developed a mixed assembly using&amp;nbsp;&lt;strong&gt;C++ CLI&lt;/strong&gt; that process audio samples and computes&amp;nbsp;peaks&amp;nbsp;grouping them by frequency range. Through &lt;strong&gt;DirectShow&lt;/strong&gt; I load audio track and I grab 44100&amp;nbsp;samples per second and I transform them with&amp;nbsp;&lt;strong&gt;FFT&lt;/strong&gt; (I found &lt;a class="" href="http://www.relisoft.com/science/physics/sound.html" target="_blank"&gt;this&lt;/a&gt; good guide)&amp;nbsp;. FFT is heavy calculation to repeat many times per second, thus I chosen C++ CLI&amp;nbsp;to reduce interop, limiting it&amp;nbsp;only to the peaks exposed as a property.&lt;/p&gt;
&lt;p&gt;The WPF side contains a custom element named &lt;strong&gt;AudioVisualization&lt;/strong&gt; that 12 times per second loads peaks and shows bars using animations. My&amp;nbsp;sample player contains a simple skin, but obviuosly we can customize bars exploiting WPF capabilities.&lt;/p&gt;
&lt;p&gt;Here a video demo:&lt;/p&gt;
&lt;p&gt;&lt;a title="Reyalp" href="http://video.msn.com/video.aspx?vid=66f292d3-3230-44de-ba6a-53a053513b94" target="_new"&gt;&lt;img title="Reyalp" alt="Reyalp" src="http://img3.catalog.video.msn.com/Image.aspx?uuid=66f292d3-3230-44de-ba6a-53a053513b94&amp;amp;w=500&amp;amp;h=375" border="0" /&gt;&lt;br /&gt;Reyalp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Full source code is available &lt;a class="" title="Source code" href="http://lab.ricciolo.aspitalia.com/Downloads/WaveSpectrum.zip?lang=eng&amp;amp;lab=53" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=14803" width="1" height="1"&gt;</content><author><name>RiccioloCristian</name><uri>http://blogs.windowsclient.net/members/RiccioloCristian.aspx</uri></author><category term="WPF" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/WPF/default.aspx" /><category term="Custom element" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/Custom+element/default.aspx" /><category term="C++ CLI" scheme="http://blogs.windowsclient.net/ricciolocristian/archive/tags/C_2B002B00_+CLI/default.aspx" /></entry></feed>