The following xaml Code is in View of mvvm
XAML CODE
<Window
x:Class="Example04.View.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:si="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
Title="MainWindow"
Height="250"
Width="300"
MinHeight="200">
<Grid>
<Grid.RowDefinitions>
<RowDefinition
Height="110px"
/>
<RowDefinition
Height="*"
/>
</Grid.RowDefinitions>
<ListBox
Name="employeeListBox"
ItemsSource="{Binding
empList}"
Grid.Row="0"
SelectedItem="{Binding
SelectedIndex}">
<i:Interaction.Triggers>
<i:EventTrigger
EventName="SelectionChanged">
<i:InvokeCommandAction
Command="{Binding
MyCommand}"
CommandParameter="{Binding
ElementName=employeeListBox, Path=SelectedValue}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBox>
<Grid
Grid.Row="1"
DataContext="{Binding
SelectedEmployee}">
<Grid.RowDefinitions>
<RowDefinition
Height="*"
/>
<RowDefinition
Height="*"
/>
<RowDefinition
Height="*"
/>
<RowDefinition
Height="*"
/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition
Width="80"
/>
<ColumnDefinition
Width="*"
/>
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0">First
Name</Label>
<Label
Grid.Row="1"
Grid.Column="0">Last
Name</Label>
<Label
Grid.Row="2"
Grid.Column="0">Title</Label>
<Label
Grid.Row="3"
Grid.Column="0">Department</Label>
<TextBox
Grid.Row="0"
Grid.Column="1"
Text="{Binding
Path=FirstName, Mode=TwoWay}"
/>
<TextBox
Grid.Row="1"
Grid.Column="1"
Text="{Binding
Path=LastName, Mode=TwoWay}"
/>
<TextBox
Grid.Row="2"
Grid.Column="1"
Text="{Binding
Path=Title, Mode=TwoWay}"
/>
<TextBox
Grid.Row="3"
Grid.Column="1"
Text="{Binding
Path=Department, Mode=TwoWay}"
/>
</Grid>
</Grid>
</Window>
CodeBehind CODE
The folllwoing code is in viewModel of mvvm
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
Example04.Model;
using
Example04.Common;
using
System.ComponentModel;
namespace
Example04.ViewModel
{
public class
MainWindowViewModel :
INotifyPropertyChanged
{
public List<Employee>
empList { get; set;
}
private Employee selectedEmployee;
public Employee SelectedEmployee
{
get { return
selectedEmployee; }
set
{
selectedEmployee = value;
NotifyPropertyChanged("SelectedEmployee");
}
}
public DelegateCommand<object>
MyCommand { get;
private set; }
public MainWindowViewModel()
{
List<Employee>
elist = new List<Employee>();
elist.Add(new
Employee() { EmployeeNumber = 1, FirstName = "John",
LastName = "Dow", Title =
"Accountant", Department =
"Payroll" });
elist.Add(new
Employee() { EmployeeNumber = 2, FirstName = "Jane",
LastName = "Austin", Title =
"Account Executive", Department =
"Employee Management" });
elist.Add(new
Employee() { EmployeeNumber = 3, FirstName = "Ralph",
LastName = "Emmerson", Title =
"QA Manager", Department =
"Product Development" });
elist.Add(new
Employee() { EmployeeNumber = 4, FirstName =
"Patrick", LastName = "Fitzgerald",
Title = "QA Manager", Department =
"Product Development" });
elist.Add(new
Employee() { EmployeeNumber = 5, FirstName =
"Charles", LastName = "Dickens", Title
= "QA Manager", Department =
"Product Development" });
empList = elist;
MyCommand =
new DelegateCommand<object>(Excute);
}
public void
Excute(object employee)
{
SelectedEmployee
= (Employee)employee;
}
protected void
NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged !=
null)
{
PropertyChangedEventArgs args =
new
PropertyChangedEventArgs(propertyName);
this.PropertyChanged(this,
args);
}
}
public event
PropertyChangedEventHandler PropertyChanged;
}
}
The following code is in Model
CodeBehind
namespace
Example04.Model
{
public class
Employee
{
public
int EmployeeNumber {
get; set; }
public string
FirstName { get; set;
}
public string
LastName { get; set;
}
public string
Department { get; set;
}
public string
Title { get; set;
}
public override
string ToString()
{
return String.Format("{0}
{1} ({2})", FirstName, LastName, EmployeeNumber);
}
}
}