繁体   English   中英

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

ViewModel or Model binding with Caliburn.Micro

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这比caliburn问题更像是MVVM问题,但这与我如何使用caliburn完成它有关。

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

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

例如,我有以下模型:

SummaryItem
{
    int Id
    string Name
    string Description
}

和对应的viewmodel:

SummaryViewModel : Conductor<IScreen>.Collection.OneActive
{
    ObservableCollection<SummaryItem> SummaryItems;

    OnInitialize()
    {
        SummaryItems = // REST api call to load items
    }
}

和视图:

         <ListBox x:Name="SummaryItems" Height="617" HorizontalAlignment="Left" VerticalAlignment="Top" Width="468" Background="Transparent">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Button Width="460" Height="120">
                        <Button.Content>
                            <StackPanel Orientation="Horizontal" Height="120" Width="400">
                                <TextBlock Text="{Binding Id}" Height="120" FontSize="40" Width="350" />
                                <TextBlock Text="{Binding Name}" Height="120" FontSize="40" Width="350" />
                                <TextBlock Text="{Binding Description}" FontSize="40" Width="50" TextAlignment="Right" />
                            </StackPanel>
                        </Button.Content>
                    </Button>
                    <ContentControl cal:View.Model="{Binding}" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

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

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

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

肖恩

1 个回复

您需要将项目添加到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);
        }
    }
}
2 使用caliburn.micro显示2个ViewModel

我希望同时在屏幕上显示2个控件,并允许它们彼此独立过渡。 我正在使用Conductor.Collection.AllActive,但无法弄清楚如何获取List控件(一个名为ProductListViewModel的屏幕)和详细信息屏幕(ProductViewModel)在shell中同时显示。 ...

3 如何使用caliburn.micro绑定到命令属性?

我有一个暴露几个命令属性的行为。 通常我使用MVVM Light,并且只在我的视图模型中使用路由命令并绑定到那些。 但是,这个项目正在使用Caliburn.Micro所以我正在尝试使用Caliburn.Micro方式。 我可以在Message.Attach上使用一些语法来执行此操作(是否有 ...

4 使用Caliburn.Micro将图像绑定到Uri

为什么下面的Image没有正确绑定到源? 后面的代码和视图模型: 我挖掘了Caliburn.Micro源代码,发现它在应用约定时没有使用TypeDescriptor。 问题是:我们如何说服Caliburn.Micro将Uris转换为ImageSource? ...

5 使用Caliburn.Micro绑定到子属性

我正在使用Caliburn.Micro,我希望能够做类似以下的事情...... 但是这不会编译,因为xaml不允许名称包含“。”。 这里的首选解决方案是什么? 我只是恢复到标准的数据绑定语法吗? ...

10 C#如何使用Caliburn.Micro将WPF滚动条值绑定到ViewModel

我正在尝试将XAML中的滚动条值绑定到C#中ViewModel中的属性。 我可以绑定其他控件值,例如按钮和文本块,但似乎无法找出滚动条的解决方案。 我正在使用Caliburn.Micro建立我的MVVM。 在下面,我有一个文本块和一个滚动条。 文本块可以正常工作,但滚动条似乎未链接到 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM