我正在与 UWP 合作,WinUI 2.5 prerelease
并注意到在WPF
. 所以我正在使用一个TabView
控件并在其中加载一个Page
。每次创建新选项卡时,都会在其中加载一个新页面(没什么花哨的)。
现在,我的页面上有一些OnLoaded
事件。因此,当创建一个新选项卡并加载页面时,OnLoad
会调用该事件(应该如此),但是现在当我切换回其他选项卡并再次切换到当前页面时,OnLoaded
再次调用该事件。为什么 ?
带有 TabView 的主页
<Page
x:Class="TestUWPApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestUWPApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:Microsoft.UI.Xaml.Controls"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<controls:TabView x:Name="MainTabView">
<controls:TabView.TabItems>
<controls:TabViewItem Header="Intelliventory"
IsClosable="False" CanDrag="False">
<controls:TabViewItem.IconSource>
<controls:SymbolIconSource Symbol="Home" />
</controls:TabViewItem.IconSource>
<Frame SourcePageType="local:Page2" />
</controls:TabViewItem>
<controls:TabViewItem Header="Intelliventory"
IsClosable="False" CanDrag="False">
<controls:TabViewItem.IconSource>
<controls:SymbolIconSource Symbol="Home" />
</controls:TabViewItem.IconSource>
<Frame SourcePageType="local:Page3" />
</controls:TabViewItem>
</controls:TabView.TabItems>
</controls:TabView>
</Grid>
</Page>
具有 OnLoaded 事件的 Page3
namespace TestUWPApp
{
public sealed partial class Page3 : Page
{
public Page3()
{
this.InitializeComponent();
}
private void Page3_OnLoaded(object sender, RoutedEventArgs e)
{
//This event is called every time tab is switched
}
}
}
每次选定的选项卡更改为Page3 tab
事件时onLoaded
都会被调用。当第一次切换选项卡并加载页面时,应该只调用一次。