I am using Silverlight 4
View Model
Imports System.ServiceModel.DomainServices.Client
Imports System.Collections.ObjectModel
Imports GalaSoft.MvvmLight
Imports GalaSoft.MvvmLight.Command
Imports GalaSoft.MvvmLight.Messaging
Public Class TimeSheetsViewModel
Inherits ViewmodelBase
Private WithEvents ctx As TimeSheetServiceContext = OPDomainContext.OPDomainContextInstance
#Region "Properties"
Private M_monday As New ObservableCollection(Of TIMESHEET)
Public Property Monday As ObservableCollection(Of TIMESHEET)
Get
Return M_monday
End Get
Set(value As ObservableCollection(Of TIMESHEET))
Me.M_monday = value
RaisePropertyChanged("Monday")
End Set
End Property
Public Property MondayLoading As Boolean = True
#End Region
#Region "Constructors"
Public Sub New()
ctx.Load(Of TIMESHEET)(ctx.GetTimeSheetsMondayQuery(), AddressOf MondayLoaded, Nothing)
End Sub
#End Region
#Region "Private Methdods"
Private Sub MondayLoaded(args As Loadoperation)
Try
Dim _TimeSheets As New ObservableCollection(Of TIMESHEET)
For Each Timesheet As TIMESHEET In args.Entities
_TimeSheets.Add(Timesheet)
Next
Me.M_monday = _TimeSheets
MondayLoading = False
Catch ex As Exception
ErrorWindow.CreateNew(ex.Message)
End Try
End Sub
#End Region
End Class
User Control
Partial Public Class Ctrl_TimeSheetDataGrid
Inherits UserControl
Public Sub New()
InitializeComponent()
End Sub
Public Property TimeSheetItemsSource() As ObservableCollection(Of TIMESHEET)
Get
Return DirectCast(GetValue(ItemsSourceProperty), ObservableCollection(Of TIMESHEET))
End Get
Set(value As ObservableCollection(Of TIMESHEET))
SetValue(ItemsSourceProperty, value)
End Set
End Property
Dim ItemsSourceProperty As DependencyProperty = DependencyProperty.Register("TimeSheetItemsSource", GetType(ObservableCollection(Of TIMESHEET)), GetType(Ctrl_TimeSheetDataGrid), New PropertyMetadata(New PropertyChangedCallback(AddressOf onItemsSourcePropertyChanged)))
Private Sub onItemsSourcePropertyChanged(sender As Object, dp As DependencyPropertyChangedEventArgs)
Me.dgMonday.ItemsSource = dp.NewValue
End Sub
End Class
Using the user control
<ds:Ctrl_TimeSheetDataGrid x:Name="dgMonday" TimeSheetItemsSource="{Binding Monday}"/>