C# 在Silverlight中使用RIA服务进行数据绑定
我试图在组合框中显示表的内容 我使用的是MVVM模式,在我的viewmodel类中,如果我写这篇文章,它会起作用: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
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();
}