随着我的应用变得越来越大,我发现相同类型的实体越来越多地出现,通常是在列表框中。
当有人点击实体时,我想导航到该实体的详细视图。
这方面的一个示例是产品:它按类别显示在产品列表中,显示在搜索结果中,或者可能显示为已保存的收藏夹。在我的实例中,所有这些都来自本地SQLCE存储中的表。
每当我以某种方式展示实体时,有人可以点击它,我基本上剪切相同的代码:订阅列表框上的SelectionChange事件,提取实体,使用MVVM Light消息来表示所选实体已经改变了,然后调用NavigationService来开展业务。
有没有人在类似的东西上工作过,如果有的话,你有什么想法?或者更重要的是,如果我忽略了一些MVVM Light工具包惯例,请指点我指向正确的方向?
答案 0 :(得分:0)
您现在是从代码隐藏还是View Model调用NavigationService?如果是前者,您可以检查WP7 Navigation arcticle by LBugnion是否从VM触发它。如果将其与EventToCommand
行为(like in here)结合使用,您应该能够在VM中创建一个漂亮而干净的“MyEntitySelected”命令,该命令将实体作为参数。
答案 1 :(得分:0)
我认为这里的问题是,如何在不每次剪切/粘贴相同代码的情况下处理此问题?如果是这种情况,可能尝试将实体/列表框事件打包在XAML用户控件中!看看这个:http://www.windowsphonegeek.com/articles/Creating-a-WP7-Custom-Control-in-7-Steps
然后,如果表示需要不同,您可以看一下:http://www.windowsphonegeek.com/articles/Implementing-Windows-Phone-7-DataTemplateSelector-and-CustomDataTemplateSelector(此示例在一个列表框中执行不同的样式,但您可以将其更改为仅在每个不同的页面上应用不同的样式上面的一个列表框)