This question is locked. New answers and comments are not allowed.
                        
                        In the project I use Silverlight4, Telerik Q1 2011: RadGridView, MVVM, WCF RIA Service, ORM EF 4 code first CTP 5
1. Domain Model Layer: POCO class:
2. Data Access Layer: DbContext
3. Domain Service Layer: WCF RIA Service WCF RIA Services with EF4 CTP5
RegAssignService.cs
RegAssignService.metadata.cs
4. Silverlight Navigate Application - View Layer:
RegAssignView.xaml on blog's Support MVVM and Domain Data Source MVVM support
RegAssign.xaml.cs
5 View Model Layer
RegAssignViewModel
In my View RadButtons in RadGridView does not work at any variants of a binding and implemenation of commands to ViewModel!
My request:
Very simple example of implementation in ViewModel CRUD сommands RadGridView
using magic QueryableDomainServiceCollectionView
Thanks
                                1. Domain Model Layer: POCO class:
// My Register ModBus Protocol
public partial class RegAssign {     [Key]     public long Id { get; set; }     public string Code { get; set; }     public string Description { get; set; }     public int ModBusReg { get; set; }     public int MinRegNum { get; set; }     public int MaxRegNum { get; set; } } public class EFContext : DbContext {         public EFContext() : base("ApplicationServices")          {             Configuration.LazyLoadingEnabled = false;         }         public DbSet<RegAssign>     RegAssigns      { get; set; } }RegAssignService.cs
[EnableClientAccess()] public class RegAssignDomainService : DomainService {     public RegAssignDomainService()     {         this.Container = new EFContext();     }     private EFContext Container { get; set; }     protected override void Dispose(bool disposing)     {         if (disposing)         {             this.Container.Dispose();         }         base.Dispose(disposing);     }     protected override bool PersistChangeSet()     {         this.Container.SaveChanges();         return base.PersistChangeSet();     }     public ObjectContext ObjectContext     {         get        {             return ((IObjectContextAdapter)this).ObjectContext;         }     }     public IEnumerable<RegAssign> GetRegAssigns()     {         return this.Container.RegAssigns.OrderBy(a => a.ModBusReg).ToList();     }     public void InsertRegAssign(RegAssign obj)     {         this.Container.Insert(obj);     }     public void UpdateRegAssign(RegAssign currentRegAssign)     {         this.Container.Update(currentRegAssign, this.ChangeSet.GetOriginal(currentRegAssign));     }     public void DeleteRegAssign(RegAssign obj)     {         this.Container.Delete(obj);     }     private static Expression<Func<RegAssign, string>> CreateSelectorExpression(string propertyName)     {         var paramterExpression = Expression.Parameter(typeof(RegAssign));         return (Expression<Func<RegAssign, string>>)Expression.Lambda(Expression.PropertyOrField(paramterExpression,   propertyName), paramterExpression);     } } [MetadataType(typeof(RegAssignMetadata))] public class RegAssign {     #region Nested type: RegAssignMetadata     internal sealed class RegAssignMetadata     {         // Metadata classes are not meant to be instantiated.         private RegAssignMetadata()         {         }         public long Id { get; set; }         public string Code { get; set; }         public string Description { get; set; }         public int ModBusReg { get; set; }         public int MinRegNum { get; set; }         public int MaxRegNum { get; set; }     }     #endregion } RegAssignView.xaml on blog's Support MVVM and Domain Data Source MVVM support
<Grid x:Name="LayoutRoot">         <Grid.RowDefinitions>             <RowDefinition Height="Auto" />             <RowDefinition />         </Grid.RowDefinitions>           <Border telerikQuickStart:ThemeAwareBackgroundBehavior.IsEnabled="True" Grid.RowSpan="2" />           <StackPanel Name="ConfigurationPanel"                     Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,5,0,0">             <telerik:RadButton Width="150" Content="Delete selected" Margin="0,0,5,0"                                Command="{Binding DeleteCommand}"                               CommandParameter="{Binding ElementName=mainGrid, Path=SelectedItem}"                               Visibility="{Binding IsDeleteCommandAvailable, Converter={StaticResource BooleanToVisibilityConverter}}"  />             <telerik:RadButton Width="150" Content="Add New" Margin="0,0,5,0"                                Command="{Binding DeleteCommand}"                               CommandParameter="{Binding ElementName=mainGrid, Path=SelectedItem}"                               Visibility="{Binding IsInsertCommandAvailable, Converter={StaticResource BooleanToVisibilityConverter}}"                               />             <telerik:RadButton Width="150" Content="Save edit" Margin="0,0,5,0"                               Command="telerikGrid:RadGridViewCommands.CommitEdit"                                  CommandTarget="{Binding ElementName=mainGrid}"  />             <telerik:RadButton Width="150" Content="Cancel edit"                               Command="telerikGrid:RadGridViewCommands.CancelRowEdit"                                  CommandTarget="{Binding ElementName=mainGrid}"  />         </StackPanel>                         <!-- SelectionMode="Extended" -->         <telerik:RadGridView x:Name="mainGrid"                              ItemsSource="{Binding View}"                              SelectedItem="{Binding SelectedItem}"                             AutoGenerateColumns="False"                              Margin="0,5,0,0"                              Grid.Row="1"                              ActionOnLostFocus="None"                              CanUserDeleteRows="True"                             IsReadOnly="False"                             >             <telerik:RadGridView.Columns>                 <telerik:GridViewDataColumn DataMemberBinding="{Binding Code}" Header="Code"/>                 <telerik:GridViewDataColumn DataMemberBinding="{Binding ModBusReg}" Header="Mod Bus Register"/>                 <telerik:GridViewDataColumn DataMemberBinding="{Binding MinRegNum}" Header="Min Register"/>                 <telerik:GridViewDataColumn DataMemberBinding="{Binding MaxRegNum}" Header="Max Register"/>                 <telerik:GridViewDataColumn DataMemberBinding="{Binding Description}" Header="Description" Width="*"/>                 <telerik:GridViewColumn>                     <telerik:GridViewColumn.CellTemplate>                         <DataTemplate>                             <telerik:RadButton Content="Delete"                                                Command="telerikGrid:RadGridViewCommands.Delete"                                                CommandParameter="{Binding ElementName=mainGrid, Path=SelectedItem}" />                         </DataTemplate>                     </telerik:GridViewColumn.CellTemplate>                 </telerik:GridViewColumn>             </telerik:RadGridView.Columns>         </telerik:RadGridView>     </Grid>RegAssign.xaml.cs
public partial class RegAssign : Page {         public RegAssign()         {             InitializeComponent();             this.mainGrid.Items.DescriptorsSynchronizationMode = SynchronizationMode.TwoWay;             RegAssignViewModel viewModel = new RegAssignViewModel();             this.mainGrid.DataContext = viewModel;             this.ConfigurationPanel.DataContext = viewModel;         } } 5 View Model Layer
RegAssignViewModel
    public class RegAssignViewModel : ViewModelBase      {         private QueryableDomainServiceCollectionView<RegAssign> view;         private IEnumerable<RegAssign> selectedItems;          private DelegateCommand loadCommand;         private ICommand insertCommand;         private ICommand deleteCommand;         private ICommand saveCommand;         private ICommand cancelCommand;           private RegAssignDomainContext context;           public RegAssignViewModel()         {             context = new RegAssignDomainContext();             EntityQuery<RegAssign> getQuery = context.GetRegAssignsQuery();             this.view = new QueryableDomainServiceCollectionView<RegAssign>(context, getQuery);               this.view.PageSize = 10;             this.view.AutoLoad = true;                           this.view.PropertyChanged += this.OnViewPropertyChanged;               this.loadCommand   = new DelegateCommand(this.ExecuteLoadCommand, this.LoadCommandCanExecute);             this.insertCommand = new DelegateCommand((o) =>             {                 view.AddNew(o ?? new RegAssign());             });                 //RadGridViewCommands.BeginInsert;             this.saveCommand    = RadGridViewCommands.CommitEdit;             this.cancelCommand  = RadGridViewCommands.CancelRowEdit;             this.deleteCommand  = RadGridViewCommands.Delete;             /*             this.insertCommand  = new DelegateCommand(this.ExecuteInsertCommand, this.InsertCommandCanExecute);             //this.editCommand    = new DelegateCommand(this.ExecuteEditCommand, this.EditCommandCanExecute);             this.deleteCommand  = new DelegateCommand(this.ExecuteDeleteCommand, this.DeleteCommandCanExecute);             this.saveCommand    = new DelegateCommand(this.ExecuteSaveCommand, this.SaveCommandCanExecute);             this.cancelCommand  = new DelegateCommand(this.ExecuteCancelCommand, this.CancelCommandCanExecute);              */         }           public IEnumerable View          {              get { return this.view; }          }           public RegAssign SelectedItem         {             get { return (RegAssign)this.view.CurrentItem; }         }           public int PageSize         {             get { return this.view.PageSize; }             set            {                 if (this.view.PageSize != value)                 {                     this.view.PageSize = value;                     this.OnPropertyChanged(m => m.PageSize);                 }             }         }           public bool AutoLoad         {             get { return this.view.AutoLoad; }             set             {                  if (this.view.AutoLoad != value)                 {                     this.view.AutoLoad = value;                     this.OnPropertyChanged(m => m.AutoLoad);                 }             }         }           public ICommand InsertCommand          {              get { return insertCommand; }          } /* My unsuccessful implementation of an inserting command RadGridView         public bool IsInsertCommandAvailable { get { return InsertCommandCanExecute(null); } }         public ICommand InsertCommand { get { return insertCommand; } }         private void ExecuteInsertCommand(object o)         {             view.AddNew((RegAssign)o ?? new RegAssign());         }         private bool InsertCommandCanExecute(object o)         {             return view.CanAddNew;         } */        public bool IsBusy { get { return view.IsBusy; } }           public bool CanLoad { get { return view.CanLoad; } }         public ICommand LoadCommand { get { return loadCommand; } }         private void ExecuteLoadCommand(object o)          {              view.Load();          }         private bool LoadCommandCanExecute(object o)         {             return CanLoad && ! AutoLoad;         }           private void OnViewPropertyChanged(object sender, PropertyChangedEventArgs e)         {             switch (e.PropertyName)             {                 case "CanLoad":                     this.loadCommand.InvalidateCanExecute();                     break;                 case "IsBusy":                 case "AutoLoad":                     this.OnPropertyChanged(e.PropertyName);                     this.loadCommand.InvalidateCanExecute();                     break;                 default:                     this.OnPropertyChanged(e.PropertyName);                     break;             }         }In my View RadButtons in RadGridView does not work at any variants of a binding and implemenation of commands to ViewModel!
My request:
Very simple example of implementation in ViewModel CRUD сommands RadGridView
using magic QueryableDomainServiceCollectionView
Thanks