WP7视图在哪里实例化?

时间:2012-04-26 16:54:40

标签: windows-phone-7 windows-phone-7.1

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

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

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

2 个答案:

答案 0 :(得分:2)

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

但是,在XAML编程中,最佳做法是使用ViewModel(Controller和Model的组合,并在属性上添加更改跟踪)。 ViewModel堆栈通常像这样工作(从视图返回):

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

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

  • MVVM Lite(可以说是WP最常用的MVVM框架,它进一步包括一个消息框架,以促进更松散耦合的通信)
  • WP7 Guide(Microsoft模式与实践示例应用程序,但通常认为过于复杂)

答案 1 :(得分:1)

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

相关问题