Expression Blend offers us a Project Template for creating MVVM project by default. MVVM Project template can be created by creating Silverlight Databound application.

Well lets create a new Silverlight Databound application as shown below.

Databound application in silverlight

The Blend takes care of creating a MVVM Project Template for us as shown below :

MVVM Project Template

Lets take a deeper look at what Blend has created for us.

Make note that the Important DLLs are already added for us by Blend. In Visual studio we would have to do it Manually.

DLL in MVVM Project

The ViewModel is created as shown below :

public class MainViewModel : INotifyPropertyChanged
{
public MainViewModel()
{
// Insert code required on object creation below this point.
}
private string viewModelProperty = "Runtime Property Value";
/// <summary>
/// Sample ViewModel property; this property is used in the view to display its value using a Binding.
/// </summary>
/// <returns></returns>

public string ViewModelProperty
{
get
{
return this.viewModelProperty;
}
set
{
this.viewModelProperty = value;
this.NotifyPropertyChanged("ViewModelProperty");
}
}
/// <summary>
/// Sample ViewModel method; this method is invoked by a Behavior that is associated with it in the View.
/// </summary>

public void ViewModelMethod()
{
if(!this.ViewModelProperty.EndsWith("Updated Value", StringComparison.Ordinal))
{
this.ViewModelProperty = this.ViewModelProperty + " - Updated Value";
}
}

#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;

private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(
this, new PropertyChangedEventArgs(info));
}
}
#endregion
}


Also creates a View named as MainView.xaml for us.

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ic="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:local="clr-namespace:MVVMBlend"
mc:Ignorable="d"
x:Class="MVVMBlend.MainView"
d:DesignWidth="640" d:DesignHeight="480">

<UserControl.Resources>
<local:MainViewModel x:Key="MainViewModelDataSource" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource MainViewModelDataSource}}" d:DataContext="{d:DesignData
/SampleData/MainViewModelSampleData.xaml}">
<TextBlock Text="{Binding ViewModelProperty}" HorizontalAlignment="Center" VerticalAlignment="Center"/>

<Button Content="Update Value" Height="41" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,125,0,0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ic:CallMethodAction MethodName="ViewModelMethod" TargetObject="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</
UserControl>

Just select the xaml view and move to the Properties Window , you would see somethng like this.

We need not touch the xaml all the modifications could be done from here.

The below highlighted area is the place to work.

Work place in MVVM

Click on the icon shown below:

MVVM application

That would open a Create Data Binding dialog box. Modify it just like that and click ok. The xaml would be updated.

Data binding in MVVM

A Call is made for the MainView.xaml from the startup page MainPage.xaml.

<Grid x:Name="LayoutRoot" Background="White">
<local:MainView />
</Grid>

Lets not modify anything for now. Lets retain the code generated by Blend.

Lets give it a run.

run MVVM application

Hit the Buttoin Update Value.

Databound application

This is a very simple implementation of MVVM offereed by Blend.

In my next post regarding this topic I would describe what other features Expression Blend offers to the Developers and how we can create Business application using Blend. Till Then Happy Coding.