Windows phone 7 ViewModel或使用Caliburn.Micro的模型绑定

Windows phone 7 ViewModel或使用Caliburn.Micro的模型绑定,windows-phone-7,mobile,caliburn.micro,Windows Phone 7,Mobile,Caliburn.micro,这更像是一个MVVM问题,而不是caliburn问题,但它关系到我如何用caliburn完成它 我是Sliverlight/WP7开发的新手,所以如果我对自己的描述不够好,请告诉我 我已将caliburn.micro正确连接到带有phonecontainer/simplecontainer和viewmodels等的WP7应用程序。我遇到的问题是如何将模型集合正确绑定到屏幕上 例如,我有以下型号: SummaryItem { 整数Id 字符串名 字符串描述 } 以及相应的viewmodel: S

这更像是一个MVVM问题,而不是caliburn问题,但它关系到我如何用caliburn完成它

我是Sliverlight/WP7开发的新手,所以如果我对自己的描述不够好,请告诉我

我已将caliburn.micro正确连接到带有phonecontainer/simplecontainer和viewmodels等的WP7应用程序。我遇到的问题是如何将模型集合正确绑定到屏幕上

例如,我有以下型号:

SummaryItem
{
整数Id
字符串名
字符串描述
}
以及相应的viewmodel:

SummaryViewModel:Conductor.Collection.OneActive
{
可观察收集汇总项目;
初始化()
{
SummaryItems=//加载项的REST api调用
}
}
以及以下观点:


我的问题是,在silverlight/caliburn中,将模型对象集合绑定到将在导航中使用的视图的正确方法是什么。如您所见,当有人单击其中一个按钮时,我将在下一个viewmodel上进行另一个RESTAPI调用,以获取项目数据并在屏幕上拍摄它。但是,我无法使用该列表框代码使项目显示在屏幕上。我试着使用ItemsSource=SummaryItems,这很有效,但似乎无法确定样本是如何生成的。我在示例中注意到,Items属性用于viewmodel的,我不确定它如何与模型对象集成

我可能只是不清楚绑定在所有这些情况下是如何工作的,以及caliburn是如何与之集成的。谁能给我指一下正确的方向吗

任何帮助都将不胜感激。谢谢


Sean

您需要将项目添加到ObservableCollection中,而不是从调用中创建新的ObservableCollection:

SummaryViewModel : Conductor<IScreen>.Collection.OneActive
{
    private readonly ObservableCollection<SummaryItem> _items;
    public ObservableCollection<SummaryItem> SummaryItems 
    {
        get 
        {
            return _items;
        }
    }
    ObservableCollection<SummaryItem> SummaryItems;

    public SummaryViewModel() 
    {
        _items = new ObservableCollection<SummaryItem>();
    }

    protected override void OnInitialize()
    {
        var items = MyRestCall();
        SummaryItems.Clear();
        foreach(SummaryItem s in items)
        {
            SummaryItems.Add(s);
        }
    }
}
SummaryViewModel:Conductor.Collection.OneActive
{
私有只读可观察收集项目;
公共可观测集合汇总项目
{
得到
{
退货(物品);;
}
}
可观察收集汇总项目;
公共摘要视图模型()
{
_items=新的ObservableCollection();
}
受保护的重写void OnInitialize()
{
var items=MyRestCall();
SummaryItems.Clear();
foreach(项目中的汇总项目)
{
汇总项目。添加(s);
}
}
}

您需要将项目添加到ObservableCollection中,而不是从调用中创建新的ObservableCollection:

SummaryViewModel : Conductor<IScreen>.Collection.OneActive
{
    private readonly ObservableCollection<SummaryItem> _items;
    public ObservableCollection<SummaryItem> SummaryItems 
    {
        get 
        {
            return _items;
        }
    }
    ObservableCollection<SummaryItem> SummaryItems;

    public SummaryViewModel() 
    {
        _items = new ObservableCollection<SummaryItem>();
    }

    protected override void OnInitialize()
    {
        var items = MyRestCall();
        SummaryItems.Clear();
        foreach(SummaryItem s in items)
        {
            SummaryItems.Add(s);
        }
    }
}
SummaryViewModel:Conductor.Collection.OneActive
{
私有只读可观察收集项目;
公共可观测集合汇总项目
{
得到
{
退货(物品);;
}
}
可观察收集汇总项目;
公共摘要视图模型()
{
_items=新的ObservableCollection();
}
受保护的重写void OnInitialize()
{
var items=MyRestCall();
SummaryItems.Clear();
foreach(项目中的汇总项目)
{
汇总项目。添加(s);
}
}
}