0

Hier ist meine Situation - Ich beginne meine erste SL-Anwendung aus einem Windows-Hintergrund, wo ich das MVC-Muster an Ort und Stelle habe. Ich denke, dass ich dieses Muster nutzen kann, also spring ich direkt in die Erstellung einer SL-Anwendung (Lösung) mit 3 Projekten -> 1 mit meinem Modell (Geschäftsobjekte von vorher), SL-App (automatisch generiert, wenn ich SL gewählt habe Projekt) und 1 SL.Web-Projekt (wird automatisch generiert, wenn ich ein SL-Projekt ausgewählt habe).Silverlight WCF-Dienst an Grid gebunden - Grid ist leer ... fehle ich etwas?

Hier sind die Schritte, die ich getan habe: Ich habe ein leeres Raster auf meine XAML-Datei gelöscht, einen Dienst erstellt und es wird ohne Probleme erkannt. Ich habe meinem Webprojekt einen "Silverlight-aktivierten WCF-Dienst" hinzugefügt und in meinem Projekt habe ich auf mein "Model" -Projekt verwiesen. Innerhalb von [Operation], habe ich die folgende Methode (Service):

[OperationContract] 
public EmployeeCollection GetEmployees() 
{ 
    EmployeeCollection employees = Model.EmployeeCollection.GetAllEmployees(); 
    return employees; 
} 

Wenn ich aber das Debuggen und einen Haltepunkt setzen, ich Daten auf Rückkehr der Mitarbeiter sehen, damit ich weiß, Daten zurückgegeben wird.

Jetzt, auf meiner page.xaml.cs-Datei, scheint es, dass mein Raster nicht irgendwie gefüllt wird, aber warum nicht.

ich folgendes Snippet haben:

void MyWebService_GetEmploteesCompleted(object sender, EmployeeWebService.GetEmployeesCompletedEventArgs e) 
{ 
    dataGrid.ItemsSource = e.Result; 
} 

Wo sonst sollte ich suchen werden? Was kann ich vermissen? Muss ich weitere Code-Schnipsel hinzufügen, um mit meinem BLL (Model) zu arbeiten?

Vielen Dank für jeden Hinweis.

=============================

BTW, während des Debuggens, in der "Autos" Fenster, ich beachten Sie die folgenden Werte kommen durch auf _GetEMployeesCompleted():

dataGrid.ItemSource ........... Count = 30 e.Result ......... Count = 30

Warum werden die Werte nicht in meinem DataGrid angezeigt?

Antwort

0

Haben Sie AutoGenerateColumns = true im DataGrid festgelegt? Welche Schnittstellen implementiert EmployeeCollection?

+0

Mein Raster ist ein einfaches Raster ohne Eigenschaften, daher sollte AutoGenerateColumns standardmäßig true sein. Nur um zu bestätigen, ich ging voran und setzen die folgenden: Autogeneratecolumns = „true“ /> Gemäß dem meine _Collection habe ich folgende Schnittstellen implementiert: IDataErrorInfo, Binding , IBindingListView. Von der Windows-Entwicklung kommend, wurden diese Objekte/Entitäten nicht serialisiert, also fange ich an zu denken, dass das das Problem ist, aber ich habe auch gelesen, dass mit .NET 3.5 SP1 Ihre benutzerdefinierten Klassen explizit mit Serialisierung und Ähnlichem markiert werden [DataMember] ist nicht mehr obligatorisch, korrekt? –

0

Verzeihen Sie die dumme Frage, aber da wir nicht sehen, wie die Employee-Klasse implementiert ist, entlarvt Ihre Employee-Klasse öffentliche Eigenschaften (nicht nur öffentliche Mitglieder)? Sie können nur an Eigenschaften binden, die möglicherweise erklären, warum DataGrid Spalten nicht automatisch generiert.

+0

Ja, wie ich oben erwähnt habe. Dieser Rahmen meines BLL und DAL funktioniert perfekt in meinen Windows-Formularen. Meine Frage ist, muss ich sie mit irgendwelchen Zusätzen "bestreuen", um sie für WCF oder SL Verbrauch zu ermöglichen? –

+0

DataContract und DataMember sind natürlich erforderlich. Ich will nicht offensichtlich sein, aber wir haben nicht genug Informationen in der Post. – Paully

+0

Auch anstatt ItemSource direkt zuzuweisen, stellen Sie sicher, dass es keine Ausnahmen in e.Errors gibt – Paully

0

Diese Frage ist ein bisschen alt, aber ich habe in ein ähnliches Problem lief ...

Sie das Thema-Engine verwenden? Ich habe festgestellt, dass die Verwendung des Gitters in einem anderen Steuerelement (ChildWindow, Tab usw.) mit der Theme-Engine dazu führt, dass die untergeordneten Elemente nicht gerendert werden. Ich habe einen Fehler mit den Toolkit-Leuten ausgelöst, also werden wir sehen, ob es behoben wird.