Dependency Property

I am try to use a datagrid on a user control an expose the itemsource property via a dependency property.  
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

Open in new window



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

Open in new window


Using the user control

<ds:Ctrl_TimeSheetDataGrid x:Name="dgMonday"  TimeSheetItemsSource="{Binding Monday}"/>

Open in new window

LVL 3
Kevin RobinsonPrivate VB.NET ContractorAsked:
Who is Participating?
 
MikeTooleCommented:
Your ViewModel is set up to provide data to the View via the Monday property (I'm presuming that the DataContext is set to an instance of the ViewModel somewhere else in your xaml), so why use a Dependency property?
0
 
apeterCommented:
what is the error/exception here ?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.