Introduction to Binding ComboBox and DataGrid Controls in Silverlight 2.0 - Detailed Explanation
(Page 6 of 6 )
Let us try to understand the code in the previous sections:
Binding Dropdown to Object Collection:
We are consuming the WCF service with the following statements:
Dim objService As New EmpService.EmpServiceClient
objService.GetDepartmentListAsync()
As the communication takes place in an asynchronous manner, the "DeptListFetched” method gets executed when the fetching is completed. This callback mechanism is managed by using delegation as follows:
AddHandler objService.GetDepartmentListCompleted, AddressOf DeptListFetched
The “DeptListFetched” method gets executed by the Silverlight framework once the WCF service responds. The “GetDepartmentList” method sends back a collection of objects and gets directly filled into “GetDepartmentListCompletedEventArgs” (in this case, it is the “e” parameter in “DeptListFetched” method). Finally, we assign the same to the ComboBox as follows:
Private Sub DeptListFetched(ByVal sender As Object, ByVal e As EmpService.GetDepartmentListCompletedEventArgs)
Me.cboDept.DisplayMemberPath = "Dname"
Me.cboDept.ItemsSource = e.Result
End Sub
Cascading Dropdowns with Object Collection binding:
This works very similar to the binding dropdown, except that the second dropdown gets bound every time when the user selects an item in the first drop down.
You can observe the following event, which fetches employee information from the WCF service based on the user-selected department (in the first ComboBox):
Private Sub cboDept_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles cboDept.SelectionChanged
Me.lblMsg.Text = "Fetching Employees.."
Dim oDept As EmpService.Dept = Me.cboDept.SelectedItem
objService.GetEmployeeListByDeptAsync(oDept.Deptno)
End Sub
The second dropdown gets bound to the list of employees during callback, as shown in the following code:
Private Sub EmpListFetched(ByVal sender As Object, ByVal e As EmpService.GetEmployeeListByDeptCompletedEventArgs)
Me.cboEmp.DisplayMemberPath = "Ename"
Me.cboEmp.ItemsSource = e.Result
Me.lblMsg.Text = "Fetched!"
End Sub
In my upcoming articles, we will see more and more examples of Silverlight 2.0 development together with LINQ to SQL and WCF. I hope you enjoyed the article and any suggestions, bugs, errors, enhancements etc. are highly appreciated at http://jagchat.spaces.live.com
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |