1

嗨,我遇到了一个问题,找不到合适的解决方案。在我的视图中,我有几个需要从 Viewmodel 填充的组合框。视图的 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方面非常新,任何帮助将不胜感激Thanx Elio

4

1 回答 1

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);
             }
         }
    }
}
于 2012-10-09T18:25:46.263 回答