I am using Silverlight 4.0 to implement MVVM architecture, I have got a usercontrol TestMVVM.View.EmployeeView and a view EmployeeList within this usercontrol. EmployeeList contains some textbox and a button. My problem is when I use DataContext on the EmployeeList as given in the code the command on button stops working but if I remove DataContext from EmployeeList the command of button works fine.
<UserControl x:Class="TestMVVM.View.EmployeeView"
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:VM="clr-namespace:TestMVVM.ViewModel"
xmlns:view="clr-namespace:TestMVVM.View"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
>
<UserControl.DataContext>
<VM:EmployeeListViewModel/>
</UserControl.DataContext>
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions >
<RowDefinition ></RowDefinition>
<RowDefinition ></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions >
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
</Grid.ColumnDefinitions>
<sdk:DataGrid AutoGenerateColumns="False" Height="160" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="105" ItemsSource="{Binding EmployeeList,Mode=OneTime}" SelectedItem="{Binding SelectedEmployee,Mode=TwoWay}" >
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="Age" Binding="{Binding Age,Mode=TwoWay}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" />
<sdk:DataGridTextColumn Header="Name" Binding="{Binding Name,Mode=TwoWay}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<view:EmployeeList Grid.Row="0" Grid.Column="1" DataContext="{Binding SelectedEmployee}" >
</view:EmployeeList>
</Grid>
</UserControl>
//view 2
<UserControl x:Class="TestMVVM.View.EmployeeList"
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"
mc:Ignorable="d"
xmlns:VM="clr-namespace:TestMVVM.ViewModel"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White" >
<Grid.RowDefinitions>
<RowDefinition Height="20" ></RowDefinition>
<RowDefinition Height="20" ></RowDefinition>
<RowDefinition Height="20" ></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions >
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock x:Name="name" Text="Name" ></TextBlock>
<TextBox Grid.Column="1" x:Name="txt_name" Text="{Binding Name,Mode=TwoWay}" >
</TextBox>
<TextBlock Grid.Row="1" x:Name="age" Text="Age" ></TextBlock>
<TextBox Grid.Column="1" Grid.Row="1" x:Name="txt_age" Text="{Binding Age,Mode=TwoWay}" >
</TextBox>
<Button x:Name="btn_Add" Grid.Row="3" Content="Add" Command="{Binding Path=testCommand}" ></Button>
</Grid>
</UserControl>