<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Michael Sync</title>
	
	<link>http://michaelsync.net</link>
	<description>Sharing our knowledge</description>
	<lastBuildDate>Sun, 14 Jun 2009 12:54:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/MichaelSync" type="application/rss+xml" /><feedburner:emailServiceId>MichaelSync</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>An Early Look at Silverlight Model-View-ViewModel Toolkit 1</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/2ei_KoPeVzE/an-early-look-at-silverlight-model-view-viewmodel-toolkit-1</link>
		<comments>http://michaelsync.net/2009/06/14/an-early-look-at-silverlight-model-view-viewmodel-toolkit-1#comments</comments>
		<pubDate>Sun, 14 Jun 2009 11:33:28 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1433</guid>
		<description><![CDATA[Introduction
This post is just an early look of upcoming Silverlight Model-View-ViewModel Toolkit. I know that this is very early state but I&#8217;m writing about this here because I would like to get the feedbacks from the community so that I can prioritize the plans based on what the community want. If you are a fan [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>This post is just an early look of upcoming Silverlight Model-View-ViewModel Toolkit. I know that this is very early state but I&#8217;m writing about this here because I would like to get the feedbacks from the community so that I can prioritize the plans based on what the community want. If you are a fan of <a href="http://wpf.codeplex.com/Wiki/View.aspx?title=WPF%20Model-View-ViewModel%20Toolkit" target="_blank">WPF MVVM Toolkit</a> then you will probably like it.</p>
<p style="text-align: center;"><img style="display: block; margin-left: auto; margin-right: auto; border: 0px initial initial;" title="Silverlight MVVM Toolkit" src="http://michaelsync.net/wp-content/uploads/2009/06/Silverlight-MVVM-Toolkit.jpg" alt="Silverlight MVVM Toolkit" width="489" height="48" /></p>
<p><strong>Download :</strong> <a href="http://michaelsync.net/demo/SilverlightModelViewApplication.zip">SilverlightModelViewApplication.zip (15 KB)</a></p>
<h2>Features</h2>
<p>The toolkit includes:</p>
<ul>
<li>A Visual Studio 2008 Project Template</li>
<li>Silverlight Command Implementation</li>
<li>ViewModelBase that implements INotifyPropertyChanged interface</li>
</ul>
<h2>What is Silverlight MVVM Toolkit?</h2>
<p>Silverlight MVVM Toolkit is a Visual Studio project template that has some useful pre-written implementations for Silverlight Command and INotifyPropertyChanged interface. The main intention of creating this toolkit is to help developers to develop the MVVM pattern-based Silverlight application quickly.</p>
<p>I&#8217;ve been using this template since a few weeks ago and I found it quite useful because whenever I need to create some samples for my blog or the POC projects for my Office, I always need to create a ViewModal class that implements INotifyPropertyChanged interface and need to add the Prism V2 assembly as a reference in my sample for using DelegateCommand. When I look at WPF MVVM toolkit, I really like it because it saves a lot of my times for copying and pasting the old code from my old sample to new sample. After using WPF MVVM toolkit, I was thinking why not create a project template for Silverlight as well. and now, I did it.</p>
<p>The project template is already attached in this post so you can download and test it in your machine. The msi file for that template is not ready yet but I will show you very simple steps (just two steps only) to make it visible in Project Template Dialog of Visual Studio 2008.</p>
<h2>How to install Silverlight Model-View-ViewModel Toolkit</h2>
<p>Please download the zip file (Don&#8217;t extract it) and close all Visual Studio 2008 instances before following the steps below ~</p>
<p><strong>Step #1:</strong> Copy and paste SilverlightModelViewApplication.zip under this path below</p>
<p>%ProgramFiles%\Microsoft Visual Studio 9.0\<br />
Common7\IDE\ProjectTemplates\CSharp\Silverlight\1033</p>
<ul><img class="alignnone size-full wp-image-1435" title="VS Project Template" src="http://michaelsync.net/wp-content/uploads/2009/06/VS-Project-Template.jpg" alt="VS Project Template" width="476" height="397" /></ul>
<p><strong>Step #2.</strong> Open Visual Studio 2008 Command Prompt and type &#8220;deven /setup&#8221;</p>
<p><img class="alignnone size-full wp-image-1436" title="commandline" src="http://michaelsync.net/wp-content/uploads/2009/06/commandline.jpg" alt="commandline" width="508" height="334" /></p>
<p>Yes. That&#8217;s all for installing new project template for Visual Studio.</p>
<h2><span style="font-weight: normal; font-size: 13px;">Once you have finished registering new project template, you open the Visual Studio 2008 and check &#8220;New Project&#8221; dialog.  Then, you will get new project template &#8220;Silverlight Model View Application&#8221; under Silverlight project type as shown in picture below.</span></h2>
<p><img class="aligncenter size-full wp-image-1437" title="Silverlight MVVM Template in VS" src="http://michaelsync.net/wp-content/uploads/2009/06/Silverlight-MVVM-Template-in-VS.jpg" alt="Silverlight MVVM Template in VS" width="563" height="195" /></p>
<p>Choose that template to create a Silverlight MVVM appliction. Note that linking with ASP.NET project, enabling the RIA service and generating unit-test project are not availble in this template but I will add all of this later.</p>
<p>The structure of Silverlight MVVM project is as below.</p>
<p><img class="aligncenter size-full wp-image-1447" title="Silverlight MVVM Folder Structure" src="http://michaelsync.net/wp-content/uploads/2009/06/Silverlight-MVVM-Folder-Structure.jpg" alt="Silverlight MVVM Folder Structure" width="304" height="250" /></p>
<h2>Commends</h2>
<p>Let&#8217;s talk about classes under Commands.  The Command implementation that I&#8217;m using in this toolkit is from <a href="http://www.codeplex.com/CompositeWPF">CompositeWPF version 2</a>. I know that I can probably roll my own implementation but I&#8217;ve been using Prism for long time and DelegateCommand is working perfectly fine so I dont think that I need to waste my time to do the duplicated things. Please feel free to let me know if you found something that is not supported by DelegateCommand.</p>
<p>Here is the examples for using DelegateCommand.</p>
<p><strong>XAML</strong></p>
<pre name="code" class="xml">

xmlns:cmd=&quot;clr-namespace:SilverlightModelViewApplication4.Commands&quot;
</pre>
<p>Here is how you can use Command Binding and CommandParameter in Silverlight.  ( The earlier implementation of Prism v2 is cmd.Command.Click but Prism team re-named this to Click.Command at drop 9.  You can read <a href="http://compositewpf.codeplex.com/Thread/View.aspx?ThreadId=44824">this post</a> if you like to know why they did the changes)</p>
<pre name="code" class="xml">

&lt;Button
cmd:Click.Command=&quot;{Binding SearchCommand}&quot;
cmd:Click.CommandParameter=&quot;This is a CommandParameter&quot;
/&gt;
</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2503px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<pre name="code" class="xml">
&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 2503px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;&lt;Button&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 2503px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;cmd:Click.Command=&quot;{Binding SearchCommand}&quot;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 2503px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;cmd:Click.CommandParameter=&quot;This is a CommandParameter&quot;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 2503px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;/&gt;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 2503px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;&quot;&gt;
</pre>
</div>
<p><strong>C#</strong></p>
<pre name="code" class="csharp">

public DelegateCommand&lt;string&gt; SearchCommand { get; set; }

//Construtor
public MainPageViewModel()
{

SearchCommand = new DelegateCommand&lt;string&gt;((arg) =&gt;
{
MessageBox.Show(arg);
});

}
</pre>
<h2>INotifyPropertyChanged implementation</h2>
<p>Some of you might know that I wrote about how to implement INotifyPropertyChanged interface with Expression Tree so you don&#8217;t need to use any magic string in property setter.  If you haven&#8217;t read it yet, please go and read <a href="http://michaelsync.net/2009/04/09/silverlightwpf-implementing-propertychanged-with-expression-tree">this post</a> to get some idea. I implemented the same implementation in ViewModelBase class of this toolkit so you can probably use this feature as below in ViewModel class.</p>
<pre name="code" class="csharp">

//Example: How to use RaisePropertyChanged without having any magic string.

private string name = string.Empty;

public string Name
{
get { return name; }
set {
name = value;
this.RaisePropertyChanged(p =&gt; p.Name);
}
}
</pre>
<h2>Upcoming Features ~</h2>
<ul>
<li>A Project Template Waziard for linking with ASP.NET, enabling RIA Services and generating a Text project that has the references o Silverlight Unit Test Framework and Silverlight Moq</li>
<li>A C# and VB.NET project template that supports all editions (inlcuding express edition) of Visual Studio 2008</li>
<li>Creating a msi installer by using <a href="http://wix.sourceforge.net/">Windows Installer XML (WiX) toolset</a></li>
</ul>
<h2>Questions?</h2>
<p>I have a few questions for you guys.</p>
<ol>
<li>What kind of functionalities do you guys like to see in this toolkit? For example: Extensions/Attached properties, Utilities and etc</li>
<li>Do you think that I should create an installer (msi) for that? OR is it okay to have zip file and register it by youself with two simple steps? I&#8217;m asking you this because in order to create a msi, I will probably need to spend some times for learning <a href="http://wix.sourceforge.net/">Windows Installer XML (WiX) toolset</a>. So, if you guys are okay with two simple steps, I can work on other things first.</li>
</ol>
<p>Feel free to drop a comment if you have any comment or suggestion for this toolkit. If you already have similar things in your mind, please let me know. We can work together to contribute our community. You can also reach me with this email mchlsync AT gmail DOT com.</p>
<p>I will be hosting this project in codeplex.com once it&#8217;s ready.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=2ei_KoPeVzE:IpVvm5lz9LA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=2ei_KoPeVzE:IpVvm5lz9LA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=2ei_KoPeVzE:IpVvm5lz9LA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=2ei_KoPeVzE:IpVvm5lz9LA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=2ei_KoPeVzE:IpVvm5lz9LA:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=2ei_KoPeVzE:IpVvm5lz9LA:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/2ei_KoPeVzE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/06/14/an-early-look-at-silverlight-model-view-viewmodel-toolkit-1/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/06/14/an-early-look-at-silverlight-model-view-viewmodel-toolkit-1</feedburner:origLink></item>
		<item>
		<title>Silverlight Attached Properties: Binding.UpdateSourceTrigger.PropertyChanged</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/tbivqjQfFtA/silverlight-attached-properties-bindingupdatesourcetriggerpropertychanged</link>
		<comments>http://michaelsync.net/2009/06/10/silverlight-attached-properties-bindingupdatesourcetriggerpropertychanged#comments</comments>
		<pubDate>Wed, 10 Jun 2009 07:50:20 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1303</guid>
		<description><![CDATA[Note: It is one of my answers from Silverlight Forum.
Problems
UpdateSourceTrigger is not supported in Silverlight until version 3.o.
Workaround
You will need to set the focus on other controls and re-focus to the control that you are using. For example: You are typing in TextBoxA. You want to have UpdateSourceTrigger support for that textbox. So, what you have [...]]]></description>
			<content:encoded><![CDATA[<p>Note: It is <a href="http://silverlight.net/forums/t/11547.aspx">one</a> of my answers from Silverlight Forum.</p>
<h2>Problems</h2>
<p>UpdateSourceTrigger is not supported in Silverlight until version 3.o.</p>
<h2>Workaround</h2>
<p>You will need to set the focus on other controls and re-focus to the control that you are using. For example: You are typing in TextBoxA. You want to have UpdateSourceTrigger support for that textbox. So, what you have to do is that you need to change the focus on another control (e.g. TextboxB) and re-set the focus on TextboxA while typing.</p>
<p>Yes. you can do it very easily from code-behind. But ( genius? ) people from pattern world don&#8217;t like the idea of using code-behind file (so, creating a code-behind file for each and every xaml in Visual Stuid is a waste? What about changing the default pattern (MVC) to MVVM in Visual Stuido Template? ) Anyway, let me get back to the topic. So, we can probably create an attached property to workaround the UpdateSourceTrigger in Silverlight.</p>
<p><strong>Note: This code is just giving you some idea how you can workaround the issue. You will need to do the modification based on your need. </strong></p>
<p>Let&#8217;s name our attached property aS &#8220;UpdateSourceTriggerHelper&#8221;. We will add some codes for registering the property and getter/setter as below. I will tell you more about OnUpdateSourceTriggerChanged</p>
<pre name="code" class="csharp">

public class UpdateSourceTriggerHelper
{
public static readonly DependencyProperty UpdateSourceTriggerProperty =
DependencyProperty.RegisterAttached(&quot;UpdateSourceTrigger&quot;, typeof(bool), typeof(UpdateSourceTriggerHelper),
new PropertyMetadata(OnUpdateSourceTriggerChanged));

public static bool GetUpdateSourceTrigger(DependencyObject d)
{
return (bool)d.GetValue(UpdateSourceTriggerProperty);
}

public static void SetUpdateSourceTrigger(DependencyObject d, bool value)
{
d.SetValue(UpdateSourceTriggerProperty, value);
}
</pre>
<p>In OnUpdateSourceTriggerChanged method, we are going to add the logic for focusing other controls and re-setting the focus back to the original control. So, we need to walk throught the Visual Tree to get the object of other control. Please take a look at findFocusableControl();</p>
<pre name="code" class="csharp">

private static void OnUpdateSourceTriggerChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
TextBox textBox = d as TextBox;
if ((bool)e.OldValue)
{
textBox.TextChanged -= (s, arg) =&gt; {

};
}
if ((bool)e.NewValue)
{
textBox.TextChanged += (s, arg) =&gt; {
var c = findFocusableControl(textBox);
if (c != null)
{
c.Focus();
}
textBox.Focus();
};
}
}
</pre>
<p>Let&#8217;s take a look at what we did in findFocusableControl(). Based on the control that you are typing, you can get the parent of control by using VisualTreeHelper. But if you want to use this code in production, you will have to modify the code. (For example: if you can&#8217;t find any parent then you will need to find the child element. and you need to check whether that control that you get from Visual Tree Helper is focusable or not. yes. there are a lot of things to do it.)</p>
<pre name="code" class="csharp">

private static Control findFocusableControl(Control control)
{
var ctl = VisualTreeHelper.GetParent(control);
if ((ctl as Control) != null)
{
return ctl as Control;
}
else
{
int childrenCount = VisualTreeHelper.GetChildrenCount(ctl);
for (int i = 0; i &lt; childrenCount; i++)
{
var c = VisualTreeHelper.GetChild(ctl, i) as Control;
if ((c != null) &amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; (c != control))
{
return c;
}
}
}
return null;
}
}
</pre>
<p>Here is how we can use our attached property to provide PropertyChanged event.</p>
<p><strong>Usage (Example)</strong></p>
<pre name="code" class="xml">

&lt;UserControl x:Class=&quot;UpdateSourceTriggerExtDemo.Page&quot;
xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
xmlns:local=&quot;clr-namespace:UpdateSourceTriggerExtDemo&quot;
Width=&quot;400&quot; Height=&quot;300&quot;&gt;
&lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;
&lt;StackPanel&gt;
&lt;TextBox x:Name=&quot;nameTextbox&quot; Height=&quot;25&quot; Width=&quot;100&quot; Margin=&quot;5&quot; Text=&quot;{Binding Name, Mode=TwoWay}&quot;
local:UpdateSourceTriggerHelper.UpdateSourceTrigger=&quot;True&quot; /&gt;
&lt;TextBox x:Name=&quot;addressTextbox&quot; Height=&quot;25&quot; Width=&quot;100&quot; Margin=&quot;5&quot; Text=&quot;{Binding Address, Mode=TwoWay}&quot;
local:UpdateSourceTriggerHelper.UpdateSourceTrigger=&quot;False&quot; /&gt;
&lt;TextBox x:Name=&quot;phoneTextbox&quot; Height=&quot;25&quot; Width=&quot;100&quot; Margin=&quot;5&quot; Text=&quot;{Binding Phone, Mode=TwoWay}&quot;
/&gt;
&lt;Button Height=&quot;25&quot; Width=&quot;100&quot; Margin=&quot;5&quot; Content=&quot;Save&quot; /&gt;
&lt;/StackPanel&gt;
&lt;/Grid&gt;
&lt;/UserControl&gt;
</pre>
<p>Hope it helps. Feel free to let me know if you have any better solution.. I&#8217;m always open to any suggestion from you guys. Thanks..</p>
<p>Happy Silverlighting!!!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=tbivqjQfFtA:WegN2rfO4Eg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=tbivqjQfFtA:WegN2rfO4Eg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=tbivqjQfFtA:WegN2rfO4Eg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=tbivqjQfFtA:WegN2rfO4Eg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=tbivqjQfFtA:WegN2rfO4Eg:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=tbivqjQfFtA:WegN2rfO4Eg:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/tbivqjQfFtA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/06/10/silverlight-attached-properties-bindingupdatesourcetriggerpropertychanged/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/06/10/silverlight-attached-properties-bindingupdatesourcetriggerpropertychanged</feedburner:origLink></item>
		<item>
		<title>Bindable WPF RichText Editor with XAML/HTML Convertor</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/OHn51SCAnlQ/bindable-wpf-richtext-editor-with-xamlhtml-convertor</link>
		<comments>http://michaelsync.net/2009/06/09/bindable-wpf-richtext-editor-with-xamlhtml-convertor#comments</comments>
		<pubDate>Tue, 09 Jun 2009 15:33:33 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1397</guid>
		<description><![CDATA[Introduction
This post will give you some tips/tricks of using Rich Textbox in WPF. As we all know, the build-in WPF RichTexbox doesn’t provide some features that we are looking for so if you are in need of using RichTexbox in WPF project, you should know that you will need to roll your own implementation (at [...]]]></description>
			<content:encoded><![CDATA[<h1>Introduction</h1>
<p>This post will give you some tips/tricks of using Rich Textbox in WPF. As we all know, the build-in WPF RichTexbox doesn’t provide some features that we are looking for so if you are in need of using RichTexbox in WPF project, you should know that you will need to roll your own implementation (at least) a bit. In this post, I will brief you how to make WPF RichTextbox bindable, how to display the HTML in WPF, how to create a Rich Textbox Editor with toolbar.</p>
<p><strong>Contents</strong></p>
<ul>
<li>Bindable RichTextbox</li>
<li>RichText Editor</li>
<li>HTML to XAML Conversion</li>
</ul>
<h1 style="text-align: center; "><img class="alignnone size-full wp-image-1401" title="wpf-rich-text-editor" src="http://michaelsync.net/wp-content/uploads/2009/06/wpf-rich-text-editor.jpg" alt="wpf-rich-text-editor" width="512" height="307" /></h1>
<h1></h1>
<p><strong>Source Download</strong> ~ <a href="http://michaelsync.net/demo/WpfRichText.Ex.zip" target="_self">WpfRichText.Ex.zip (336 KB)</a></p>
<p><strong>Dependencies</strong> ~</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/aa972129.aspx">XAML to HTML Conversion Demo</a></li>
<li><a href="http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962">DelegateCommand from WPF MVVM Toolkit 0.1</a></li>
</ul>
<h1>Bindable Rich Textbox</h1>
<p>A lot of people asked how to bind RichTextbox on the net. Yes. IMO, the Rich Textbox should be bindable but I’m not sure why Document property of RichText is not a dependency property in WPF ( someone can ask me this question?) but people like us who are using MVVM pattern need to have a binding between RichTextbox and the property of ViewModel.  How are we going to make this happen?</p>
<p>Well,  we probably need to a custom property that can be bindable in that control so the first thing that come into my mind is <a href="http://msdn.microsoft.com/en-us/library/ms749011.aspx">the attached property</a>. There maybe a lot of definitations for it but the way I understand is that it is a custom property that can be attached to control. For example: AA property to B Control or etc.</p>
<p>You can take a look at how Sam implemented the binding support for Passwordbox in <a href="http://blog.functionalfun.net/2008/06/wpf-passwordbox-and-data-binding.html">his post</a>. (Forget about encrypting the password in memory or etc for now. ) We will follow this approach to implement the binding support in RichTextbox as well.</p>
<p>The first thing that you might notice is that RichTextbox has the Document property. So, you can create an attached property by wrapping RichTextbox.Document property. Please take a look at <a href="http://stackoverflow.com/users/7583/siz">siz</a>&#8217;s implementation as below (link: <a href="http://stackoverflow.com/questions/343468/richtextbox-wpf-binding">ref</a>).</p>
<pre name="code" class="csharp">

class RichTextboxAssistant : DependencyObject
{
public static readonly DependencyProperty DocumentProperty =
DependencyProperty.Register(&quot;Document&quot;,
typeof(FlowDocument),
typeof(RichTextboxAssistant),
new PropertyMetadata(new PropertyChangedCallback(DocumentChanged)));

private static void DocumentChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
Debug.WriteLine(&quot;Document has changed&quot;);
}

public FlowDocument Document
{
get { return GetValue(DocumentProperty) as FlowDocument; }
set { SetValue(DocumentProperty, value); }
}
}
</pre>
<p>But&#8230;&#8230; OMG! why it&#8217;s so hard to use FlowDocument? How come do we need to call Content.Start and End just to get the text? why not having a property called Text which is a string datatype?</p>
<p>Yes. it&#8217;s ture that using FlowDocument is not so simple compared to a string datatype. we also got the same feeling when we were implemneting this feature. what did we do? We decided to change Document property, a FlowDocument type, to &#8220;BoundDocument&#8221; which is a string datatype. So, the new code will be like that below. As you can see, it&#8217;s a bit complicated then before since we are handling all complex things there.</p>
<pre name="code" class="csharp">

public static class RichTextboxAssistant
{

public static readonly DependencyProperty BoundDocument =
DependencyProperty.RegisterAttached(&quot;BoundDocument&quot;, typeof(string), typeof(RichTextboxAssistant),
new FrameworkPropertyMetadata(null,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
OnBoundDocumentChanged));

private static void OnBoundDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{

RichTextBox box = d as RichTextBox;

if (box == null)
return;

RemoveEventHandler(box);

string newXAML = GetBoundDocument(d);

box.Document.Blocks.Clear();

if (!string.IsNullOrEmpty(newXAML))
{

using (MemoryStream xamlMemoryStream = new MemoryStream(Encoding.ASCII.GetBytes(newXAML)))
{

ParserContext parser = new ParserContext();
parser.XmlnsDictionary.Add(&quot;&quot;, &quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;);
parser.XmlnsDictionary.Add(&quot;x&quot;, &quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;);
FlowDocument doc = new FlowDocument();

Section section = XamlReader.Load(xamlMemoryStream, parser) as Section;
box.Document.Blocks.Add(section);
}

}

AttachEventHandler(box);

}

private static void RemoveEventHandler(RichTextBox box)
{

Binding binding = BindingOperations.GetBinding(box, BoundDocument);

if (binding != null)
{
if (binding.UpdateSourceTrigger == UpdateSourceTrigger.Default ||
binding.UpdateSourceTrigger == UpdateSourceTrigger.LostFocus)
{
box.LostFocus -= HandleLostFocus;
}
else
{
box.TextChanged -= HandleTextChanged;
}
}

}

private static void AttachEventHandler(RichTextBox box)
{

Binding binding = BindingOperations.GetBinding(box, BoundDocument);
if (binding != null)
{
if (binding.UpdateSourceTrigger == UpdateSourceTrigger.Default ||
binding.UpdateSourceTrigger == UpdateSourceTrigger.LostFocus)
{
box.LostFocus += HandleLostFocus;
}
else
{
box.TextChanged += HandleTextChanged;
}
}

}

private static void HandleLostFocus(object sender, RoutedEventArgs e)
{

RichTextBox box = sender as RichTextBox;
TextRange tr = new TextRange(box.Document.ContentStart, box.Document.ContentEnd);
using (MemoryStream ms = new MemoryStream())
{
tr.Save(ms, DataFormats.Xaml);
string xamlText = ASCIIEncoding.Default.GetString(ms.ToArray());
SetBoundDocument(box, xamlText);
}

}

private static void HandleTextChanged(object sender, RoutedEventArgs e)
{

// TODO: TextChanged is currently not working!
RichTextBox box = sender as RichTextBox;
TextRange tr = new TextRange(box.Document.ContentStart,
box.Document.ContentEnd);

using (MemoryStream ms = new MemoryStream())
{
tr.Save(ms, DataFormats.Xaml);
string xamlText = ASCIIEncoding.Default.GetString(ms.ToArray());
SetBoundDocument(box, xamlText);
}

}

public static string GetBoundDocument(DependencyObject dp)
{
return dp.GetValue(BoundDocument) as string;
}

public static void SetBoundDocument(DependencyObject dp, string value)
{
dp.SetValue(BoundDocument, value);
}

}
</pre>
<p>Yes. That&#8217;s it. You can now simply bind this attached property with a string instead of a flow document.</p>
<pre name="code" class="xml">

&lt;RichTextBox  attached:RichTextboxAssistant.BoundDocument=&quot;{Binding Text}&quot; Height=&quot;92&quot; /&gt;
</pre>
<h1>RichText Editor</h1>
<p>After implementing the binding support for WPF RichTextbox, we got new requirement that we need to develop a RichText Editor (something like <a href="http://tinymce.moxiecode.com/">TinyMCE</a>) as well. So, we quickly create a new user control called RichTextEditor.xaml and place a RichTextbox with our attached property. After a few minutes, we got a WPF RichText Editor as below. ( As there are a lot of code snippets already in this post, I&#8217;m not going to post it here. Please feel free to take a look at RichTextEditor.xaml in sample project. )</p>
<p style="text-align: center; "><img class="size-full wp-image-1402 aligncenter" title="wpf-rich-text-editor1" src="http://michaelsync.net/wp-content/uploads/2009/06/wpf-rich-text-editor1.jpg" alt="wpf-rich-text-editor1" width="519" height="242" /></p>
<h1>HTML to XAML Conversion</h1>
<p>Our manager was quite happy with our quick and cool solution for implementing WPF Rich Textbox so we checked-in the changes that we made to SVN. and then, the continous integration integrated our latest changes into the new build so people from QA can start testing on our new feature.</p>
<p>After a few hours, we started getting new bugs regarding to our new RichText Editor from QA. Ouch!</p>
<p>What happened was that there is one ASP.NET website that is using the same service and same table. The ASP.NET team is using <a href="http://tinymce.moxiecode.com/">TinyMCE</a>, a Javascript WYSIWYG Editor in that website so those HTML tags which are the output of that editor are being saved in database. That&#8217;s why our WPF RichText Editor wasn&#8217;t able to render those HTML tags. The same way, their TinyMCE was also having problems with our XAML tags.</p>
<p style="text-align: center;"><img class="size-full wp-image-1404 aligncenter" title="wysiwyg-javascript-editor" src="http://michaelsync.net/wp-content/uploads/2009/06/wysiwyg-javascript-editor.jpg" alt="wysiwyg-javascript-editor" width="491" height="498" /></p>
<p>So, what should we do? Ha! I can tell that what&#8217;s in your mind now. Yes. a converter! What we need here is a converter that can convert HTML to XAML (vise-versa). Luckily, Microsoft provides a set of classes that can do the conversion for you. You can grab a copy of those classes from <a href="http://msdn.microsoft.com/en-us/library/aa972129.aspx">this link</a>. (Thank you! MS). We embedded those classes in our application and changed our code as below to support the conversion.</p>
<pre name="code" class="csharp">

public static string GetBoundDocument(DependencyObject dp)
{
var html = dp.GetValue(BoundDocument) as string;
var xaml = string.Empty;

if (!string.IsNullOrEmpty(html))
xaml = HtmlToXamlConverter.ConvertHtmlToXaml(html, false);

return xaml;
}

public static void SetBoundDocument(DependencyObject dp, string value)
{
var xaml = value;
var html = HtmlFromXamlConverter.ConvertXamlToHtml(xaml, false);
dp.SetValue(BoundDocument, html);
}
</pre>
<p>That&#8217;s is. I already attached all sourcecode in the zip file. Please feel free to download it and play as much as you like. But hey! don&#8217;t forget to give the feedback if you found something uncool!.</p>
<p>Here is how my sample looks like. Happy Wpf-ing!!! <img src='http://michaelsync.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="size-full wp-image-1415 aligncenter" title="wpf-super-cool-rich-text-editor" src="http://michaelsync.net/wp-content/uploads/2009/06/wpf-super-cool-rich-text-editor.jpg" alt="wpf-super-cool-rich-text-editor" width="619" height="313" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=OHn51SCAnlQ:Yd7lyeMuQk0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=OHn51SCAnlQ:Yd7lyeMuQk0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=OHn51SCAnlQ:Yd7lyeMuQk0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=OHn51SCAnlQ:Yd7lyeMuQk0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=OHn51SCAnlQ:Yd7lyeMuQk0:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=OHn51SCAnlQ:Yd7lyeMuQk0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/OHn51SCAnlQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/06/09/bindable-wpf-richtext-editor-with-xamlhtml-convertor/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/06/09/bindable-wpf-richtext-editor-with-xamlhtml-convertor</feedburner:origLink></item>
		<item>
		<title>Xuenn + RTI (Real-Time Innovations) Data Distribution Service!!</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/_M71ougCBcU/xuenn-rti-real-time-innovations-data-distribution-service</link>
		<comments>http://michaelsync.net/2009/06/09/xuenn-rti-real-time-innovations-data-distribution-service#comments</comments>
		<pubDate>Tue, 09 Jun 2009 13:50:22 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1428</guid>
		<description><![CDATA[RTI (Real-Time Innovations ) posted the news saying that we, Xuenn, are using their Data Distribution Serivce in for our Sport Betting Platform. You can read the details here.


]]></description>
			<content:encoded><![CDATA[<p>RTI (Real-Time Innovations ) posted the news saying that we, Xuenn, are using their <a href="http://www.rti.com/products/data_distribution/index.html">Data Distribution Serivce</a> in for our Sport Betting Platform. You can read the details <a href="http://www.rti.com/company/news/xuenn-online-gaming.html">here</a>.</p>
<p><img class="alignnone size-full wp-image-1430" title="xuenn-games" src="http://michaelsync.net/wp-content/uploads/2009/06/xuenn-games.jpg" alt="xuenn-games" width="240" height="177" /></p>
<p><img class="alignnone size-full wp-image-1429" title="rti-logo" src="http://michaelsync.net/wp-content/uploads/2009/06/rti-logo.gif" alt="rti-logo" width="137" height="55" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=_M71ougCBcU:6V3e6vRv1o4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=_M71ougCBcU:6V3e6vRv1o4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=_M71ougCBcU:6V3e6vRv1o4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=_M71ougCBcU:6V3e6vRv1o4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=_M71ougCBcU:6V3e6vRv1o4:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=_M71ougCBcU:6V3e6vRv1o4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/_M71ougCBcU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/06/09/xuenn-rti-real-time-innovations-data-distribution-service/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/06/09/xuenn-rti-real-time-innovations-data-distribution-service</feedburner:origLink></item>
		<item>
		<title>Things that make me disappointed these days</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/hfz5_jQAAiY/things-that-make-me-disappointed-these-days</link>
		<comments>http://michaelsync.net/2009/06/08/things-that-make-me-disappointed-these-days#comments</comments>
		<pubDate>Mon, 08 Jun 2009 15:37:07 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1394</guid>
		<description><![CDATA[1. Windows 7 on Sony VAIO &#8211; VGN-C25G/B 
I love technology. I love the most latest things when it comes to technology. This is what I am. I can&#8217;t control myself not to install Windows 7 on my machine as soon as it&#8217;s up on MSDN subscription downloads. then, CRASH!!  I don&#8217;t want to repeat how [...]]]></description>
			<content:encoded><![CDATA[<h2><strong>1. Windows 7 on Sony VAIO &#8211; </strong><span class="status-body"><span class="entry-content"><strong>VGN-C25G/B </strong></span></span></h2>
<p>I love technology. I love the most latest things when it comes to technology. This is what I am. I can&#8217;t control myself not to install Windows 7 on my machine as soon as it&#8217;s up on MSDN subscription downloads. then, CRASH!!  I don&#8217;t want to repeat how disappointed I am at that time. Some of my friends from Twitter know about that. I asked about that in <a href="http://social.answers.microsoft.com/Forums/en-US/w7itprohardware/thread/9df17867-2b15-41f4-a345-211db5150118">Windows 7 Forum</a>.</p>
<p><strong>ACPI.sys Address 88ET3481 BASE AT 88EP4000 DATESTAMP 49E9766</strong></p>
<p><strong>Env:</strong></p>
<p><strong>Previous OS</strong> : Vista Home Premium<br />
<strong>Laptop </strong>: Sony VAIO - <strong><span class="status-body"><span class="entry-content">VGN-C25G/B E1</span> </span></strong><br />
<strong>Memory</strong> : 2 GB<br />
<strong>Processor</strong> : Core 2 Dual</p>
<p style="text-align: center;"><img class="size-full wp-image-1418 aligncenter" title="viao" src="http://michaelsync.net/wp-content/uploads/2009/06/viao.gif" alt="viao" width="460" height="240" /></p>
<h2>2. Firefox says &#8220;Using Internet Explorer is So 2006&#8243; <img src='http://michaelsync.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </h2>
<p>Using Internet Explorer is So 2006? what the f**k! why did they mention &#8220;Internet Explorer&#8221;?? Why did they use other competitor&#8217;s name there? I&#8217;m not a Microsoft fanboy or anything. I will say the same thing if they use Opera or Google Chrome or any other browser. Insulting other by name is not cool. It seems like people from Firefox are proud of themself or something.</p>
<p>Yes. It was the day that I stopped using Firefox. I&#8217;ve been using it since long time back but I won&#8217;t use it anymore. I will miss Firefox and I will definitely miss <a href="http://michaelsync.net/firebug">Firebug</a> but it&#8217;s over. I&#8217;m currently using Google Chrome until I found the browser that I like. Good Bye, Firefox!</p>
<p style="text-align: center;"><img class="size-full wp-image-1393 aligncenter" title="shameless-firefox-ads" src="http://michaelsync.net/wp-content/uploads/2009/05/shameless-firefox-ads.jpg" alt="shameless-firefox-ads" width="580" height="359" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=hfz5_jQAAiY:TvDl7Btz0JQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=hfz5_jQAAiY:TvDl7Btz0JQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=hfz5_jQAAiY:TvDl7Btz0JQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=hfz5_jQAAiY:TvDl7Btz0JQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=hfz5_jQAAiY:TvDl7Btz0JQ:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=hfz5_jQAAiY:TvDl7Btz0JQ:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/hfz5_jQAAiY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/06/08/things-that-make-me-disappointed-these-days/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/06/08/things-that-make-me-disappointed-these-days</feedburner:origLink></item>
		<item>
		<title>Be careful when you are naming the Silverlight Class Library!!</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/R0zad3TQ8ws/did-you-know-silverlight-class-library-cant-be-named-with-resources</link>
		<comments>http://michaelsync.net/2009/05/04/did-you-know-silverlight-class-library-cant-be-named-with-resources#comments</comments>
		<pubDate>Mon, 04 May 2009 09:02:18 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1383</guid>
		<description><![CDATA[Do you know why? because there are some limitations that you can&#8217;t use when you are naming Silverlight Class Library. It happened to us. We named one of our Silverlight Class Libraries with &#8220;.Resources&#8221; postfix. Then, we got a lot of trouble. I&#8217;m not sure whether you guys are aware of this &#8220;by-design&#8221; issue or [...]]]></description>
			<content:encoded><![CDATA[<p>Do you know why? because there are some limitations that you can&#8217;t use when you are naming Silverlight Class Library. It happened to us. We named one of our Silverlight Class Libraries with &#8220;.Resources&#8221; postfix. Then, we got a lot of trouble. I&#8217;m not sure whether you guys are aware of this &#8220;by-design&#8221; issue or not. We got a lot of headaches when we are implementating the localization for WPF and Silverlight project. We have spent around 1 or 2 days just to solve this problem.</p>
<p>Here is the steps to reproduce the issue.</p>
<div>
<ol>
<li>Create Silverlight Application (e.g. SilverlightApplication4 ) with web project attached.  (both Silverlight 2 or Silverlight 3)</li>
<li>Add Silverlight Class Library and named it &#8220;ABCDE.Resources&#8221;  <em>&lt;Note: This is very important.&gt;</em></li>
<li>Add the following method in Class1.
<pre name="code" class="csharp">

public static string Foo(){
return &quot;Foo&quot;;
}
</pre>
</li>
<li>Add &#8221;ABCDE.Resources&#8221; as a reference in SilverlightApplication4.</li>
<li>Go to Page.xaml.cs</li>
<li>Add the following line in constructor.
<pre name="code" class="csharp">

Console.WriteLine(ABCDE.Resources.Class1.Foo());
</pre>
</li>
</ol>
</div>
<p><strong>Error:<br />
</strong><br />
<span style="color: red;">Could not load file or assembly &#8216;ABCDE.Resources, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&#8217; or one of its dependencies. The system cannot find the file specified.</span></p>
<p>I got that error and also, I found that &#8220;ABCDE.Resources&#8221; assembly is not getting generated in Silverlight. So, I reported this issue in WPF/Silverlight Insider List. What I heard from Microsoft is that this is by-design issue. Silverlight&#8217;s application activation logic treats this with special meaning &#8211; it recognizes such an assembly as a satellite resource assembly. Then, I tried to reproduce the issue  just like the way that we used in our project without using any code but just resx file.</p>
<p>Here is new steps to reproduce the issue.</p>
<ol>
<li>Create Silverlight Application (e.g. SilverlightApplication4 ) with web project attached.  (both Silverlight 2 or Silverlight 3)</li>
<li>Add Silverlight Class Library and named it &#8220;ABCDE.Resources&#8221;  <em>&lt;Note: This is very important.&gt;</em></li>
<li>Add new resx file (Let&#8217;s call it &#8220;Strings.resx&#8221;)</li>
<li>Change &#8220;Access Modifier :&#8221; to Public</li>
<li>Add new string to that resx file &#8220;Strings.resx&#8221;<br />
e.g: (Name: YourMessageStringInResx, Value=YourMessageStringValueInResx)</li>
<li>Go to Code-behind of that resx file &#8220;Strings.Designer.cs&#8221; and change <strong>private</strong> constructor to <strong>public</strong>. (why? yes. this is another issue. )</li>
<li>Go to Page.xaml.cs</li>
<li>Add the following line in constructor.
<pre name="code" class="csharp">

Console.WriteLine(Strings.YourMessageStringInResx);
</pre>
</li>
</ol>
<p>Then, run the application. I&#8217;m sure that you will get the same error. I&#8217;m still waiting the response from Microsoft for that issue and I will update this post as soon as I get one. As of now, the only solution for this issue is that don&#8217;t name &#8220;.Resources&#8221; for your class library and use other name like ABCDE.Languages or ABCDE.Rex or etc.</p>
<p>Hope it helps.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=R0zad3TQ8ws:DWVqR-EX6eU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=R0zad3TQ8ws:DWVqR-EX6eU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=R0zad3TQ8ws:DWVqR-EX6eU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=R0zad3TQ8ws:DWVqR-EX6eU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=R0zad3TQ8ws:DWVqR-EX6eU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=R0zad3TQ8ws:DWVqR-EX6eU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/R0zad3TQ8ws" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/05/04/did-you-know-silverlight-class-library-cant-be-named-with-resources/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/05/04/did-you-know-silverlight-class-library-cant-be-named-with-resources</feedburner:origLink></item>
		<item>
		<title>My Wedding!!</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/6NGidtO1Gt4/my-wedding</link>
		<comments>http://michaelsync.net/2009/05/03/my-wedding#comments</comments>
		<pubDate>Sun, 03 May 2009 14:41:09 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Sync's Gallery]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1336</guid>
		<description><![CDATA[
April 20, 2009. Yes. I got married on April 20, 2009. I married with my girlfriend of 7 years 10 months. We have been together since 2001 (our collage time) and I&#8217;m glad that we finally did it.




















]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">
<p style="text-align: left;">April 20, 2009. Yes. I got married on April 20, 2009. I married with my girlfriend of 7 years 10 months. We have been together since 2001 (our collage time) and I&#8217;m glad that we finally did it.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1375" title="wedding-invitation-letter-with-rings" src="http://michaelsync.net/wp-content/uploads/2009/05/wedding-invitation-letter-with-rings.jpg" alt="wedding-invitation-letter-with-rings" width="515" height="388" /></p>
<p style="text-align: center;"><img class="size-full wp-image-1335 aligncenter" title="dsc01204" src="http://michaelsync.net/wp-content/uploads/2009/05/dsc01204.jpg" alt="dsc01204" width="514" height="471" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1376" title="ring" src="http://michaelsync.net/wp-content/uploads/2009/05/ring.jpg" alt="ring" width="326" height="245" /></p>
<p style="text-align: center;"><span id="more-1336"></span></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1338" title="wedding-invitation-letter-11" src="http://michaelsync.net/wp-content/uploads/2009/05/wedding-invitation-letter-11.jpg" alt="wedding-invitation-letter-11" width="515" height="516" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1339" title="wedding-invitation-letter-1" src="http://michaelsync.net/wp-content/uploads/2009/05/wedding-invitation-letter-1.jpg" alt="wedding-invitation-letter-1" width="515" height="508" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1340" title="wedding-invitation-letter-2" src="http://michaelsync.net/wp-content/uploads/2009/05/wedding-invitation-letter-2.jpg" alt="wedding-invitation-letter-2" width="515" height="503" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1341" title="wedding-invitation-letter-3" src="http://michaelsync.net/wp-content/uploads/2009/05/wedding-invitation-letter-3.jpg" alt="wedding-invitation-letter-3" width="482" height="740" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1344" title="wedding-invitation-letter-35" src="http://michaelsync.net/wp-content/uploads/2009/05/wedding-invitation-letter-35.jpg" alt="wedding-invitation-letter-35" width="515" height="496" /></p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="alignnone size-full wp-image-1346" title="only-us" src="http://michaelsync.net/wp-content/uploads/2009/05/only-us.jpg" alt="only-us" width="515" height="506" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1355" title="we-sitting" src="http://michaelsync.net/wp-content/uploads/2009/05/we-sitting.jpg" alt="we-sitting" width="515" height="412" /></p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="alignnone size-full wp-image-1351" title="my-wife" src="http://michaelsync.net/wp-content/uploads/2009/05/my-wife.jpg" alt="my-wife" width="515" height="601" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1352" title="me-and-my-wife" src="http://michaelsync.net/wp-content/uploads/2009/05/me-and-my-wife.jpg" alt="me-and-my-wife" width="515" height="848" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1350" title="with-my-siss-frds" src="http://michaelsync.net/wp-content/uploads/2009/05/with-my-siss-frds.jpg" alt="with-my-siss-frds" width="514" height="551" /></p>
<p style="text-align: center;">
<p style="text-align: center;"><img class="alignnone size-full wp-image-1348" title="with-myo-nyein" src="http://michaelsync.net/wp-content/uploads/2009/05/with-myo-nyein.jpg" alt="with-myo-nyein" width="514" height="922" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1337" title="raining" src="http://michaelsync.net/wp-content/uploads/2009/05/raining.jpg" alt="raining" width="515" height="532" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1377" title="all-in-one" src="http://michaelsync.net/wp-content/uploads/2009/05/all-in-one.jpg" alt="all-in-one" width="512" height="384" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=6NGidtO1Gt4:Y0nwkLFAXIQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=6NGidtO1Gt4:Y0nwkLFAXIQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=6NGidtO1Gt4:Y0nwkLFAXIQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=6NGidtO1Gt4:Y0nwkLFAXIQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=6NGidtO1Gt4:Y0nwkLFAXIQ:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=6NGidtO1Gt4:Y0nwkLFAXIQ:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/6NGidtO1Gt4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/05/03/my-wedding/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/05/03/my-wedding</feedburner:origLink></item>
		<item>
		<title>Hpa An, Kayin State</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/u-5ozKgQ6nY/hpa-an-kayin-state</link>
		<comments>http://michaelsync.net/2009/05/03/hpa-an-kayin-state#comments</comments>
		<pubDate>Sun, 03 May 2009 13:54:57 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Sync's Gallery]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1358</guid>
		<description><![CDATA[Hello everyone!! I hope you all are doing well. Yes. I&#8217;m back!!! I was on long vacation and was very far away from Internet for two weeks so that a lot of mails are waiting for me. anyway, let&#8217;s forget about works and mails for now and let me upload some of my cool photos [...]]]></description>
			<content:encoded><![CDATA[<p>Hello everyone!! I hope you all are doing well. Yes. I&#8217;m back!!! I was on long vacation and was very far away from Internet for two weeks so that a lot of mails are waiting for me. anyway, let&#8217;s forget about works and mails for now and let me upload some of my cool photos that I have taken.</p>
<p>Here is the first one.</p>
<p style="text-align: center;"><img class="size-full wp-image-1359 aligncenter" title="kyauk-kan-latt-mom-me-and-my-wife" src="http://michaelsync.net/wp-content/uploads/2009/05/kyauk-kan-latt-mom-me-and-my-wife.jpg" alt="kyauk-kan-latt-mom-me-and-my-wife" width="514" height="685" /></p>
<p style="text-align: left;">This is my mother, me and my wife (yes. I got married. I will post some of our wedding photos in next post. Please wait for a while, okay? ).  The Pagoda at our back-side is called Kyauk Kan Latt Pagoda which is located in Hpa Ann, Kayin State. It was my first time visiting there but I did enjoy a lot. That place is beautiful and so green.  and&#8230;. lot and lot of fresh air. <img src='http://michaelsync.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;">Please click on the link below to see more photos ~~</p>
<p><span id="more-1358"></span></p>
<p style="text-align: center;"><img class="size-full wp-image-1361 aligncenter" title="kyauk-kan-latt" src="http://michaelsync.net/wp-content/uploads/2009/05/kyauk-kan-latt.jpg" alt="Kyauk Kan Latt" width="514" height="388" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1362" title="my-sis" src="http://michaelsync.net/wp-content/uploads/2009/05/my-sis.jpg" alt="my-sis" width="514" height="685" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1364" title="kyauk-kan-latt-lake" src="http://michaelsync.net/wp-content/uploads/2009/05/kyauk-kan-latt-lake.jpg" alt="kyauk-kan-latt-lake" width="514" height="388" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1365" title="our-group" src="http://michaelsync.net/wp-content/uploads/2009/05/our-group.jpg" alt="our-group" width="514" height="471" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1366" title="lake" src="http://michaelsync.net/wp-content/uploads/2009/05/lake.jpg" alt="lake" width="514" height="388" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1369" title="my-bro" src="http://michaelsync.net/wp-content/uploads/2009/05/my-bro.jpg" alt="my-bro" width="514" height="685" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1367" title="mt-zwegabin" src="http://michaelsync.net/wp-content/uploads/2009/05/mt-zwegabin.jpg" alt="mt-zwegabin" width="514" height="388" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1368" title="mt-kalama" src="http://michaelsync.net/wp-content/uploads/2009/05/mt-kalama.jpg" alt="mt-kalama" width="514" height="389" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=u-5ozKgQ6nY:r6rnNlWlp1Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=u-5ozKgQ6nY:r6rnNlWlp1Q:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=u-5ozKgQ6nY:r6rnNlWlp1Q:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=u-5ozKgQ6nY:r6rnNlWlp1Q:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=u-5ozKgQ6nY:r6rnNlWlp1Q:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=u-5ozKgQ6nY:r6rnNlWlp1Q:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/u-5ozKgQ6nY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/05/03/hpa-an-kayin-state/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/05/03/hpa-an-kayin-state</feedburner:origLink></item>
		<item>
		<title>Silverlight/WPF: Implementing PropertyChanged with Expression Tree</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/IAE88pvkSKU/silverlightwpf-implementing-propertychanged-with-expression-tree</link>
		<comments>http://michaelsync.net/2009/04/09/silverlightwpf-implementing-propertychanged-with-expression-tree#comments</comments>
		<pubDate>Thu, 09 Apr 2009 15:34:25 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1309</guid>
		<description><![CDATA[Source Code: RaisePropertyChangedExample.zip [94.4 KB]
Credits: Thanks to Paul Strong and Soe Moe for sharing this code with me. 
Introduction
This article will show you how to implement INotifyPropertyChanged interface with Expression Tree. I&#8217;m sure that the most of WPF/Silverlight developer are already familier with implementing INotifyPropertyChanged interface because this is the most important thing that you [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Source Code:</strong> <a title="RaisePropertyChanged Example" href="http://michaelsync.net/demo/RaisePropertyChangedExample.zip" target="_self">RaisePropertyChangedExample.zip [94.4 KB]</a></p>
<p><em><strong>Credits: </strong>Thanks to Paul Strong and Soe Moe for sharing this code with me. </em></p>
<h2>Introduction</h2>
<p>This article will show you how to implement <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx">INotifyPropertyChanged</a> interface with <a href="http://msdn.microsoft.com/en-us/library/bb397951.aspx">Expression Tree</a>. I&#8217;m sure that the most of WPF/Silverlight developer are already familier with implementing INotifyPropertyChanged interface because this is the most important thing that you have to do when you want to notify the changes of property value to the Clients. But here is with Expression Tree. The most of us used to pass the property name as a string to the PropertyChanged event. Why Expression Tree here? Passing the property name as a string doesn&#8217;t just work? No, it works but passing a string is not safe. what if you forget to update the string if you are re-naming the Property. The compiler won&#8217;t remind you that you have failed to update the string. Of course, you can verify the name like Josh mentioned in <a href="http://joshsmithonwpf.wordpress.com/2007/08/29/a-base-class-which-implements-inotifypropertychanged/">his article</a>. But still, you will know only when you run the program. This is where Expression Tree come in. You can use VS Reflector to rename when you are changing the property name. If not, the compiler will remind you to change.</p>
<p>Let&#8217;s take a look at the first sample. The class &#8220;PageViewModel&#8221; implements INotifyPropertyChanged event just as the way that we always do. There is no super cool things inside.</p>
<pre name="code" class="csharp">

public class PageViewModel : INotifyPropertyChanged
{
private string name = string.Empty;

public string Name
{
get
{
return name;
}
set
{
name = value;
this.RaisePropertyChanged(&quot;Name&quot;);
}
}

public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
</pre>
<p>But if you are developing the project, there won&#8217;t be just one class so implementing INotifyPropertyChanged become tireding process. So, I would suggest to create a base class ( I will call it &#8220;ObservableBase &#8221; in this article) so that all classes that need to be implemented INotifyPropertyChanged interface can inherit from that class.</p>
<pre name="code" class="csharp">

public abstract class ObservableBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

public void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
</pre>
<p>After creating a base class as above, we can change our PageViewModel to inhert from base class so we can completely remove all codes that we used for implementing INotifyPropertyChanged event.</p>
<pre name="code" class="csharp">

public class PageViewModel : ObservableBase
{
private string name = string.Empty;
public string Name
{
get
{
return name;
}
set
{
name = value;
this.RaisePropertyChanged(&quot;Name&quot;);
}
}
}
</pre>
<p>But we are still passing the string to RaisePropertyChanged method. How should we change it to Expression Tree? Yes, we will need to change our base class a little bit. The first thing that come into my mind is that to add one more event that can accept the expression. Let&#8217;s check out the sample below.</p>
<pre name="code" class="csharp">

public void RaisePropertyChanged&lt;TValue&gt;(Expression&lt;Func&lt;TValue&gt;&gt; propertySelector)
{
if (PropertyChanged != null)
{
var memberExpression = propertySelector.Body as MemberExpression;
if (memberExpression != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(memberExpression.Member.Name));
}
}
}
</pre>
<p>After changing this, we can call that method from setter as below.</p>
<pre name="code" class="csharp">

private string name = string.Empty;
public string Name
{
get {
return name;
}
set {
name = value;
this.RaisePropertyChanged&lt;string&gt;( () =&gt; this.Name);
}
}
</pre>
<p>But why &lt;string&gt;? Is there any way to avoid this? My friend, Soe Moe, come up with the solution that uses <a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx">C# extension method</a> to avoid having the generic type defined in setter. It&#8217;s pretty cool. Please check-out the extension method below.</p>
<pre name="code" class="csharp">

public static class ObservableBaseEx
{
public static void RaisePropertyChanged&lt;T, TProperty&gt;(this T observableBase, Expression&lt;Func&lt;T, TProperty&gt;&gt; expression) where T : ObservableBase
{
observableBase.RaisePropertyChanged(observableBase.GetPropertyName(expression));
}

public static string GetPropertyName&lt;T, TProperty&gt;(this T owner, Expression&lt;Func&lt;T, TProperty&gt;&gt; expression)
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression == null)
{
var unaryExpression = expression.Body as UnaryExpression;
if (unaryExpression != null)
{
memberExpression = unaryExpression.Operand as MemberExpression;
if (memberExpression == null)
throw new NotImplementedException();
}
else
throw new NotImplementedException();
}

var propertyName = memberExpression.Member.Name;
return propertyName;
}
}
</pre>
<p>Finally, we can call the RaisePropertyChanged event without specifing any generic type. Cool, huh?</p>
<pre name="code" class="csharp">

private string name = string.Empty;
public string Name
{
get {
return name;
}
set {
name = value;
this.RaisePropertyChanged( p =&gt; p.Name);
}
}
</pre>
<p>Yes. I&#8217;m open to any better solution that you have. Please feel free to let me know if you have better idea. You can also download my sample (both WPF and Silverlight included in zip) and play a bit as well. <img src='http://michaelsync.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Thanks for reading!</p>
<p><strong>References</strong></p>
<ul>
<li><a href="http://joshsmithonwpf.wordpress.com/2007/08/29/a-base-class-which-implements-inotifypropertychanged/">A base class which implements INotifyPropertyChanged</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx">Extension Methods (C# Programming Guide)</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/bb397951.aspx">Expression Trees</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx">INotifyPropertyChanged Interface</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=IAE88pvkSKU:i08wBqp5ZLk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=IAE88pvkSKU:i08wBqp5ZLk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=IAE88pvkSKU:i08wBqp5ZLk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=IAE88pvkSKU:i08wBqp5ZLk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=IAE88pvkSKU:i08wBqp5ZLk:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=IAE88pvkSKU:i08wBqp5ZLk:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/IAE88pvkSKU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/04/09/silverlightwpf-implementing-propertychanged-with-expression-tree/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/04/09/silverlightwpf-implementing-propertychanged-with-expression-tree</feedburner:origLink></item>
		<item>
		<title>My blog is 3 years old now!</title>
		<link>http://feedproxy.google.com/~r/MichaelSync/~3/Eexpl70VDaY/my-blog-is-3-years-old-now</link>
		<comments>http://michaelsync.net/2009/04/03/my-blog-is-3-years-old-now#comments</comments>
		<pubDate>Fri, 03 Apr 2009 16:04:32 +0000</pubDate>
		<dc:creator>Michael Sync</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://michaelsync.net/?p=1328</guid>
		<description><![CDATA[Note: This post has been posted with back date since I couldn&#8217;t write anything on that day. 
Hey there!!
My blog is 3 years old now. It was so fast!! I&#8217;m still feeling the day that I started this blog. As I wasn&#8217;t that familiar with any blogging software, I did a lot of searches and [...]]]></description>
			<content:encoded><![CDATA[<p><em>Note: This post has been posted with back date since I couldn&#8217;t write anything on that day. </em></p>
<p>Hey there!!</p>
<p>My blog is 3 years old now. It was so fast!! I&#8217;m still feeling the day that I started this blog. As I wasn&#8217;t that familiar with any blogging software, I did a lot of searches and experiments for the blogging platform that I&#8217;m  going to use for my little blog. I tried quite a few platforms including blogger, wordpress, typepad and etc and I chose to use wordpress for blog. Yes. I&#8217;m still happy with wordpress (both wordpress.com and wordpress.org ) until now and I believe that I make the right choice.</p>
<p>Here is the stats for last year.</p>
<p><strong>Stats</strong></p>
<ul>
<li>582602 page views this year (960,549 &#8211; 377,947)</li>
<li>1600 to 2000 page views per day</li>
<li>889 comments (2,850 &#8211; 1,961)</li>
</ul>
<p><strong>Award</strong></p>
<ul>
<li><a href="http://michaelsync.net/2009/04/02/silverlight-mvp-most-valuable-professional-award">MVP under Silverlight expertise</a></li>
</ul>
<p>Thank you so much!! guys.. I will keep on bringing new stuffs as much as I could. Please keep on watching.. <img src='http://michaelsync.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Thanks again. </p>
<p>Here is one of my favorite &#8220;Happy Birthday&#8221; video from youtube. <img src='http://michaelsync.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Enjoy!</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/UeypOvsY91Q&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/UeypOvsY91Q&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=Eexpl70VDaY:-CPbIXvV-w8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=Eexpl70VDaY:-CPbIXvV-w8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=Eexpl70VDaY:-CPbIXvV-w8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=Eexpl70VDaY:-CPbIXvV-w8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/MichaelSync?i=Eexpl70VDaY:-CPbIXvV-w8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/MichaelSync?a=Eexpl70VDaY:-CPbIXvV-w8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/MichaelSync?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/MichaelSync/~4/Eexpl70VDaY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelsync.net/2009/04/03/my-blog-is-3-years-old-now/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://michaelsync.net/2009/04/03/my-blog-is-3-years-old-now</feedburner:origLink></item>
	</channel>
</rss>
