gpt4 book ai didi

silverlight - 每次单击HyperlinkBut​​ton时,NavigationPage都会增加(Silverlight)

转载 作者:行者123 更新时间:2023-12-03 10:30:22 27 4
gpt4 key购买 nike

这可能是答案中确实应该太明显而又不容错过的问题之一。仍然,我似乎无法弄清楚为什么我的“播放和学习”应用程序会表现出这种行为。

在我的Mainpage.xaml上,我有一个StackPanel,其中包含几个HyperlinkButtons,它们导航到一组NavigationPages。还有一个NavigationFrameUriMapper来保存“页面”。

<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消息通知子窗口应打开时,...我得到两个子窗口(或每次从超链接按钮进入商店导航页面时都得到一个)。

我以为,当单击“超链接”按钮时,您只有一个NavigationPage ..或至少在离开导航页时破坏了当前页面。

我想念什么明显的明显东西?

最佳答案

问题很可能在于消息处理程序的注册。 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 - 每次单击HyperlinkBut​​ton时,NavigationPage都会增加(Silverlight),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com