Solved

Dependency Property

Posted on 2011-09-06
3
457 Views
Last Modified: 2013-11-12
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

0
Comment
Question by:Kevin Robinson
3 Comments
 
LVL 27

Accepted Solution

by:
MikeToole earned 500 total points
ID: 36494494
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
 
LVL 25

Expert Comment

by:apeter
ID: 36498830
what is the error/exception here ?
0

Featured Post

Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question