Работа с DataGrid в Silverlight с использованием ADO.NET и WCF - Привязка к DataGrid
ОГЛАВЛЕНИЕ
Привязка к DataGrid
Чтобы сохранить простоту пользовательского интерфейса мы просто перетащим DataGrid из инструментария на Page.xaml как и другие элементы интерфейса данного приложения. Перетаскивание элемента имеет некоторое преимущество перед заданием вручную - Visual Studio добавит соответствующее пространство имен.
xmlns:data="clr-namespace:System.Windows.Controls;assembly = System.Windows.Controls.Data"
Добавьте название для вашей сетки (x:Name=”dg”) и уберите высоту и ширину окружающего пользовательского элемента управления (UserControl). Здесь я привел исходный код для Page.xaml
<UserControl
xmlns:data="clr-namespace:System.Windows.Controls;assembly = System.Windows.Controls.Data"
x:Class="EntitiesSvcGrid.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Grid x:Name="LayoutRoot" Background="White">
<data:DataGrid x:Name="dg" />
</Grid>
</UserControl>
Привязка данных к DataGrid
Завершаем мы все в Page.xaml.cs, где вам необходимо будет привязать данные из веб-сервиса к данным табличной сетки.
Первым шагом будет добавление к этому проекту ссылки на веб-сервис. Для этого щелкните правой кнопкой мыши по ServiceReferences и в диалоговом окне Add Service Reference щелкните по Discover. Созданный ранее веб-сервис (EmployeeWebService) появится в списке. Щелкните по нему и затем переименуйте пространство имен на EmployeeWebService.
Рисунок 9-5. Добавление ссылки на сервис
Нажмите на OK для того, чтобы добавить ссылку на сервис и откройте Page.xaml.cs.
Я склонен к настройке обработчиков в событии Loaded вместо того, чтобы делать это в конструкторе, хотя это может показаться вам старомодным,
using System;
using System.Windows;
using System.Windows.Controls;
namespace EntitiesSvcGrid
{
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
Loaded += new RoutedEventHandler( Page_Loaded );
}
Нашей задачей теперь будет создание экземпляра клиента веб-сервиса и затем использование данного клиента для вызова метода GetEmployees.
Создание экземпляра клиента очень просто в исполнении,
EmployeeWebService.EmployeeWebServiceClient ws = new
EntitiesSvcGrid.EmployeeWebService.EmployeeWebServiceClient();
Хотя приложение Silverlight запускается в обозревателе, мы не можем осуществлять вызовы методов напрямую (вы не должны блокировать обозреватель), нам скорее необходимо осуществлять асинхронные вызовы. Intellisense не только предлагает нам альтернативу в видео асинхронных вызовов, но и не предлагает нам синхронные методы, которые мы создали!
Рисунок 9-6. Асинхронные вызовы