2009-07-14 6 views
0

ich ein Silverlight-ModelViewViewModel Projekt, das Ich mag würde eine Eigenschaft auf dem View-Modell zu einem Usercontrol wie entlarven:Implementierung von Eigenschaften auf einem Silverlight Ansichtsmodell

public DTO.Client Client 
{ 
    get { return client; } 
} 

Client ist ein privater Träger Variable, die ich in einem Satz async abgeschlossen Ereignishandler:

void GetClientByIDComplete(object sender, GetClientByIDCompletedEventArgs e) 
    { 
     Application.Current.RootVisual.Dispatcher.BeginInvoke(() => 
     { 
      DTO.Client c = new ServiceContract.DTO.Client(); 
      c = e.Result as DTO.Client; 
      client = e.Result as DTO.Client; 
     }); 
    } 

In meiner Silverlight Seite habe ich die folgenden:

<TextBlock Text="{Binding Client.Name}"/> 

Die Daten werden nie angezeigt. Die Daten werden angezeigt, wenn ich die Eigenschaft zu:

public DTO.Client Client 
{ 
    get { 
      client.Name = "My Name"; 
      return client; } 
} 

so ändere ich den Wert explizit zuweisen.

Was muss ich ändern, damit die Eigenschaft von meiner Seite gesehen wird?

Antwort

0

Legen Sie den Datenkontext fest, nachdem der Client ausgefüllt wurde oder vorher?

Nachdem es auf jeden Fall angezeigt werden soll, bevor es die zugrunde liegenden Daten nicht geändert hat, ohne zusätzlichen Code hinzuzufügen, implementieren Sie INotifyPropertyChanged, damit Bindungen die Daten geändert haben können.

+0

stelle ich die Datacontext in der XAML der Seite: Dann binden Sie die Objekteigenschaft an das Steuerelement:

+0

Der XAML ist deklarativ, so dass statische Ressource beim Laden aufgelöst wird , während die tatsächlichen Daten aus dem WCF-Dienst geladen werden. Die Seite ist nicht bewusst, dass die zugrunde liegenden Daten geändert wurden, es sei denn, es wird eine Benachrichtigung erhalten. Ich würde den asynchronen Aufruf vornehmen und den Datenkontext zur Laufzeit setzen, wenn Sie das Objekt aus Bequemlichkeit zurückbekommen. – Andrew

+0

Da ich ein ViewModel verwende, das die Seite nicht kennt, wie würde ich den DataContext einstellen? Vielleicht anstatt das Objekt, das der WCF-Dienst zurückgibt (was INotifyPropertyChanged implementieren sollte), einer Eigenschaft im ViewModel zuzuordnen, sollte das Objekt über ein Ereignis an die aufrufende Seite zurückgegeben werden. –

Verwandte Themen