c# - 为 Windows Phone 8 枢轴应用程序设计 ViewModel 很热门

标签 c# wpf mvvm windows-phone-8

我正在使用 MVVM Light 创建一个 Windows Phone 8 Pivot 应用程序,我想知道如何设计我的 View 模型。应用程序的每个支点(总共 3-4 个)处理不同的数据集合。

我正在考虑的选项是:

  • 拥有一个 MainViewModel,其中包含不同枢轴的不同集合。 我在 MVVM 上阅读的最佳实践都要求(至少我是这样理解它们的)一个 View 应该有一个 ViewModel,所以这个选项很自然。
  • 每个枢轴都有一个单独的 ViewModel 和一个 MainViewModel 来引用它们。 在分离和代码结构方面,这个选项对我来说更有意义。它确实使绑定(bind)和命令布线更加棘手。

  • 你会说哪个选项更好?

    最佳答案

    只有一个 View 模型,然后为每个 View 模型有单独的集合。有必要的集合项目来绑定(bind)到枢轴项目。

    看法

    <phone:Pivot x:Name="TutoPivot" 
            SelectionChanged="PivotSelectionChanged">
            <!--Pivot item one-->
            <phone:PivotItem Header="{Binding Collection1.Title}">
                <!--Double line list with text wrapping-->
                <phone:LongListSelector Margin="0,0,-12,0"
                    SelectionChanged="LongListSelector_SelectionChanged"
                    LayoutMode="Grid"
                    GridCellSize="150,150"
                    ItemsSource="{Binding Collection1.Items}"
                    ItemTemplate="{StaticResource NewSoundTemplate}"
                                        />
    

    View 模型:
    public class MainModel
    {
        public ItemViewModel Collection1 { get; set; }
        public void LoadData()
        {
            Collection1=CreateCollection();
    

    制作适当的数据上下文。

    教程:Data bound and pivot tutorial

    关于c# - 为 Windows Phone 8 枢轴应用程序设计 ViewModel 很热门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22292670/

    相关文章:

    c# - 如何获取属性中的 Controller 端点信息?

    c# - Inkscape(矢量图形)

    c# - 在 C# 和 WPF 中,可以将数组的元素绑定(bind)到对象属性吗?

    c# - 内存管理——如何以及何时将大对象写入磁盘

    c# - Class "object"中的 == 运算符在哪里定义?

    c# - TreeView 上下文菜单在 HierarchicalDataTemplate 中不起作用

    mvvm - 如何在 View 模型中向新的livedata builder添加参数

    c# - 在 WPF/C# 中使用全局键盘钩子(Hook) (WH_KEYBOARD_LL)

    c# - 菜单和更新到主 Pane (WPF)

    mvvm - EXTJS 5 图表工具提示在 require[] 上使用 "sencha-charts"不起作用