【发布时间】:2011-06-30 19:34:30
【问题描述】:
这可能是其中一个问题的答案真的应该太明显以至于任何人都不能错过。不过,我似乎无法弄清楚为什么我的“play&learn”应用程序的行为方式如此。
在我的Mainpage.xaml 上,我有一个StackPanel,其中包含几个HyperlinkButtons,它导航到一组NavigationPages。还有一个NavigationFrame 和一个UriMapper 来保存“页面”。
<StackPanel Background="Black" Orientation="Horizontal" Grid.Row="0">
<HyperlinkButton Name="Home"
TargetName="MainPageFrame" NavigateUri="/Home"
Foreground="White" FontWeight="Bold" Content="Home" />
<HyperlinkButton Name="Users"
TargetName="MainPageFrame" NavigateUri="/Users"
Foreground="White" FontWeight="Bold" Content="Users" />
<HyperlinkButton Name="Store" Foreground="White" FontWeight="Bold" Content="Store"
TargetName="MainPageFrame" NavigateUri="/Stores"/>
</StackPanel>
<navigation:Frame x:Name="MainPageFrame" Grid.Row="1" Source="/Home" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" JournalOwnership="Automatic">
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
这就是问题所在。当我在页面之间来回切换(即:单击商店、用户并返回商店)时,会创建两个商店页面。虽然乍一看在应用程序中不可见,但当我从商店页面打开子窗口时,问题会自行实现。
当我使用 MVVM 轻消息通知应该打开子窗口时,...我得到两个子窗口(或者每次我从超链接按钮进入商店导航页面时一个)。
我推测当点击超链接按钮时,您将只有一个 NavigationPage ..或者至少当前在离开导航页时被破坏了。
我遗漏了什么明显的东西?
【问题讨论】:
-
您是如何处理这些消息的?一个窗口(重用)可能会重复添加一个处理程序。你能提供商店页面的代码吗?为避免这种情况,请始终在将处理程序添加到代码中之前删除处理程序(以防代码运行两次)。
标签: silverlight mvvm navigation mvvm-light