2009-09-01 41 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方法上。

相关问题