作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能是答案中确实应该太明显而又不容错过的问题之一。仍然,我似乎无法弄清楚为什么我的“播放和学习”应用程序会表现出这种行为。
在我的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 Light Messenger存在一个已知问题,导致对象处理消息的对象无法正确释放。
解决方案非常简单-假设您的 View 处理了消息-您后面的代码应如下所示:
public StoreView() {
Messenger.Default.Register<NotificationMessage>(this, (m) => {
// some message handling
});
InitializeComponent();
}
public StoreView() {
Messenger.Default.Register<NotificationMessage>(this, (m) => {
// some message handling
});
InitializeComponent();
this.Unloaded += (sender, args) => {
Messenger.Default.Unregister(this);
};
}
ViewModels
中的消息,请确保调用
Cleanup
方法。
关于silverlight - 每次单击HyperlinkButton时,NavigationPage都会增加(Silverlight),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540139/
我是一名优秀的程序员,十分优秀!