2012-01-17 68 views
1

我有一个属性是在我的一个ViewModel中构建的,它是一个整数对一个集合。Silverlight WCF/RIA MVVM属性

private int _formTypeID; 
    public int FormTypeID 
    { 
     get { return _formTypeID; } 

     set 
     { 
      if (_formTypeID == value) 
      { 
       return; 
      } 
      _formTypeID = value; 
      RaisePropertyChanged("FormTypeID"); 
     } 
    } 

我想要做的是从我的DomainContext查询中加载它。该查询看起来像这样:

public int GetFormTypeByForm(int Formid) 
    { 
     var p = (from i in this.ObjectContext.Forms 
       where i.FormID == Formid 
       select i.FormType).FirstOrDefault(); 

     return p; 
    } 

但我似乎无法弄清楚如何做到这一点。我将使用此属性来加载特定于表单的数据,并将自定义列定义加载到我的XAML中。

任何人都知道如何做到这一点?

感谢,

尼尔

回答

1

你有本集合中的父窗体?如果是,您的查询应该可以正常工作,只需使用SingleOrDefault

否则,您必须对您的形式加载到DomainContext:

private int _FormType; 
public int FormType 
{ 
    get { return _FormType; } 
    set 
    { 
    if (_FormType == value) return; 
    _FormType = value; 
    RaisePropertyChanged("FormType"); 
    } 
} 

public void LoadFormTypeByForm(int Formid) 
{ 
    var query = (from f in this.ObjectContext.Forms 
       where f.FormID == Formid 
       select f.FormType); 

    var action = new Action<LoadOperation<Form>>((op) => 
    { 
     if (op.HasError && !op.IsErrorHandled) 
     { 
     op.MarkErrorAsHandled(); 
     return; 
     } 
     var form = ObjectContext.Forms.SingleOrDefault(f => f.FormID == FormID); 
     if (form != null) 
     FormType = form.FormType; 
    }); 
    Context.Load(query, action, null); 
} 
+1

这是完美的!谢谢! – 2012-01-17 20:06:11