2

有谁知道在 WP7 应用程序中实例化视图的位置?

它们是否由 Silverlight 导航框架实例化?SL Nav 框架是否负责实例化视图和导航?

或者视图是否在其他地方实例化并且导航框架只是获取视图实例的引用?如果是这样,我是否可以控制视图实例化并从 DI 容器实例化它们?

4

2 回答 2

2

要直接回答您的问题,我知道无法覆盖视图对象的创建。

然而,在 XAML 编程中,最好的做法是使用 ViewModel(控制器和模型的组合,并在属性上添加了更改跟踪)。ViewModel 堆栈通常像这样工作(从视图返回):

  • 查看 XAML 在根元素上包含一个 DataContext:DataContext="{Binding PageNameViewModel, Source={Static ViewModelLocator}}"
  • ViewModelLocator 添加到Application.Resourcesin 中App.xaml,并在启动期间由 App.xaml.cs 提供一个 DI 容器
  • ViewModelLocator 为每个页面的视图模型定义一个属性,每个属性都通过 DI 容器实例化 VM

有关更多信息,请搜索“MVVM Windows Phone”或查看以下项目:

  • MVVM Lite(可以说是 WP 最常用的 MVVM 框架,它进一步包含一个消息框架以促进更松散耦合的通信)
  • WP7 指南(Microsoft Patterns & Practices 示例应用程序,但通常被认为过于复杂)
于 2012-04-27T05:18:49.897 回答
1

在 Windows Phone 中导航的默认方式是使用NavigationService. 要导航到新页面,请使用该Navigate(Uri source)方法。与其他平台不同,此方法仅将 Uri 作为参数。只有平台具有此方法的覆盖,该方法采用要导航到的对象。这是 Windows Phone 的限制。Uri 必须是 new 的位置PhoneApplicationPage。NavigationService 然后创建这个对象并导航到它,将当前页面放在它的 backstack 上。从那里您可以使用 GoBack 和 GoForward 方法在两个页面之间导航。希望这可以帮助

于 2012-04-26T18:14:36.613 回答