2009-09-01 25 views
0

我有一個TextBlock看起來像這樣:的Silverlight綁定到TextBlock的從RIA服務

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

這是DataContext的一個<Canvas>設置MyClient這是在視圖模型裏面:

public Client MyClient { get; private set; } // This is a RIA Entity, hence supports INotifyPropertyChanged 

public ViewModel() { 
    MyClient = new Client(); 
    LoadOperation<Client> loadClient = RiaContext.Load<Client>(RiaContext.GetClientsQuery()); 
    loadClient.Completed += new EventHandler(loadClient_Completed); 
} 

void loadClient_Completed(object sender, EventArgs e) { 
    MyClient = DB.Clients.Single(); 
} 

像上面這樣設置MyClient不會引發PropertyChanged事件。因此,UI永遠不會更新。

回答

0

這是我最終做的。我添加了RIA回調完成時觸發的事件。然後,我將視圖中的一個處理程序添加到ViewModel中。如此有效,它會一直等到ViewModel抓取數據,然後將DataContext設置爲ViewModel - 從而獲取正確的數據。

0

您應該設置單向或雙向綁定。

<TextBlock Text="{Binding Name, Mode=OneWay}" /> 
<TextBlock Text="{Binding Name, Mode=TwoWay}" /> 

默認情況下,我相信綁定會執行OneTime。

0

由於您要替換UI所連接的對象,UI永不更新。 替換髮生在loadClient_completed方法上。