C# 在Silverlight中使用RIA服务进行数据绑定

C# 在Silverlight中使用RIA服务进行数据绑定,c#,data-binding,silverlight-4.0,ria,C#,Data Binding,Silverlight 4.0,Ria,我试图在组合框中显示表的内容 我使用的是MVVM模式,在我的viewmodel类中,如果我写这篇文章,它会起作用: private IEnumerable<EventType> _eventTypes; public ManageProfileModel() { _referenceData = new ReferenceDataContext(); _referenceData.Load(_referenceDat

我试图在组合框中显示表的内容

我使用的是MVVM模式,在我的viewmodel类中,如果我写这篇文章,它会起作用:

private IEnumerable<EventType> _eventTypes;

public ManageProfileModel()
        {
            _referenceData = new ReferenceDataContext();

            _referenceData.Load(_referenceData.GetEventTypesQuery(), false);

            _eventTypes = _referenceData.EventTypes;
        }
那么组合框是空的。这有什么不对

我想使用列表,因为我想能够在列表中添加和删除数据


致以最诚挚的问候。

只需从头部直接开枪

您是否尝试为列表添加类似propertychanged事件的内容? 因此,数据可能是异步的,而属性没有被告知更改

就像我说的

 private List<EventType> _eventTypes;
 public List<EventType> EventTypes
    {
        get { return _eventTypes; }
        set
        {
            _eventTypes = value;
            RaisePropertyChanged("EventTypes");
        }
    }
private List\u事件类型;
公共列表事件类型
{
获取{return\u eventTypes;}
设置
{
_事件类型=值;
RaisePropertyChanged(“事件类型”);
}
}
再看看可观察到的集合

就像我说的只是一次机会


希望这有帮助

我没有太多的MVVM暴露,但对于silverlight+RIA,我通常会这样做

private List<EventType> _eventTypes;
public ManageProfileModel()
{
    _referenceData = new ReferenceDataContext();

    var op = _referenceData.Load(_referenceData.GetEventTypesQuery(), false);
    op.Completed += op_Completed;

}

void po_Completed(object sender, EventArgs e)
{
    var op = ( InvokeOperation<IEnumerable<EventType>>)sender;
    _eventTypes = op.Value.ToList();
}
private List\u事件类型;
公共管理概要模型()
{
_referenceData=新的ReferenceDataContext();
var op=\u referenceData.Load(\u referenceData.GetEventTypesQuery(),false);
op.Completed+=op_Completed;
}
已完成作废po_(对象发送方,事件参数e)
{
var op=(InvokeOperation)发送方;
_eventTypes=op.Value.ToList();
}

如果我没记错的话,您不能直接将IEnumerable转换为IList。这有点棘手。我将使用以下链接中的选项。自从我遇到同样的问题后,我把它放在书签里了。

或者看看这个链接


DomainContext.Load
是异步的,因此在第二个示例中,您创建的列表很可能是空的,因为
EntitySet
尚未完成加载。使用由
StackOverflowException
发布的代码延迟创建列表,直到填充了
EntitySet
且该列表应能正常工作

 private List<EventType> _eventTypes;
 public List<EventType> EventTypes
    {
        get { return _eventTypes; }
        set
        {
            _eventTypes = value;
            RaisePropertyChanged("EventTypes");
        }
    }
private List<EventType> _eventTypes;
public ManageProfileModel()
{
    _referenceData = new ReferenceDataContext();

    var op = _referenceData.Load(_referenceData.GetEventTypesQuery(), false);
    op.Completed += op_Completed;

}

void po_Completed(object sender, EventArgs e)
{
    var op = ( InvokeOperation<IEnumerable<EventType>>)sender;
    _eventTypes = op.Value.ToList();
}