您好我遇到了问题,无法找到合适的解决方案。 在我的视图中,我有几个Combobox,需要从Viewmodel填充。 View的DataContent定义如下:
<navigation:Page.Resources>
<viewModel:TheViewModel x:Key="viewModel"/>
</navigation:Page.Resources>
<navigation:Page.DataContext>
<Binding Source="{StaticResource viewModel}"/>
</navigation:Page.DataContext>
然后在ViewModel构造函数中,我有如下代码:
LoadOperation<ProducType> loadPT = context.Load(context.GetProducTypeQuery());
loadPT.Completed += (sender1, e1) => {
if (!loadPT.HasError) {
LoadOperation<Client> loaC = context.Load(context.GetClientQuery());
loaC .Completed += (sender2, e2) => {
if (!loaC.HasError) {
ProducTypes = loadPT.Entities;
Clients= loaC.Entities;
Remitentes = loadr.Entities;
}
};
}
};
使用这种配置我遇到的问题是我的组合框永远不会被填充因为Silverlight的异步模型,当框架完成创建视图时,上面的代码还没有执行。 我敢肯定这一定是我缺乏知识,我不是新的porgamming但是很新的silverlight,任何帮助请将不胜感激 感谢名单 埃利奥
答案 0 :(得分:1)
我的ViewModel派生自实现INotifyPropertyChanged的基类。我将我的组合框绑定到我的ViewModel上的公共属性。进行异步调用以获取属性getter中的数据。
以下是一个例子:
视图模型:
public class MyViewModel : BaseViewModel
{
private List<MyObject> _myObjectlist;
public List<MyObject> MyObjectList
{
get
{
if (_myObjectList == null)
{
_ctx.Load(q=>{
_myObjectList = q.Value;
//INotifyPropertyChanged implementation
RaisePropertyChanged("MyObjectList");
},null);
}
}
}
}