每次导航到页面时如何初始化页面(UWP C#)?

当每个 PivotItem 都是一个页面时,我在 UWP C# 中使用 pivot。每次按下 PivotItem 都会转到一个开关盒并选择要加载的页面(框架)。我的问题是,第一次一切正常,但如果我离开一页并再次按到那个枢轴,就会发生奇怪的事情。我需要每次打开该页面时都将其完全相同地初始化


Xaml 中的枢轴:


<Pivot x:Name="XmlConfigPivot" SelectionChanged="XmlConfigPivot_SelectionChanged">

        <PivotItem Header="Stub_Tab">

            <Frame/>

        </PivotItem>

        <PivotItem Header="Layout">

            <Frame/>

        </PivotItem>

 </Pivot>

按 PivotItem 时的 CS 代码:


private void XmlConfigPivot_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

        PivotItem item = ((sender as Pivot).SelectedItem) as PivotItem;

        string header = item.Header.ToString();

        Frame frame = item.Content as Frame;

        switch (header)

        {

            case "Layout": frame?.Navigate(typeof(LayoutTab)); break;

            case "Stub_tab": frame?.Navigate(typeof(StubTab)); break;

        }

}

“LayoutTab”是一个 XAML+CS 页面,它在初始化时执行某些操作,它的功能并不重要,但每次打开它时都需要清空页面。


布局举例(真正的逻辑太复杂就不放这里了):


public sealed partial class LayoutTab : Page

{

    public ObservableCollection<Sensor> sensorsCollection = new ObservableCollection<Sensor>();

    public ObservableCollection<Axis> axisesCollection = new ObservableCollection<Axis>();

    int selectedSensor = -1;


    static bool isInitializes = false;


    public LayoutTab()

    {

        InitData();

        InitializeComponent();

        isInitializes = true;

    }

}

我的问题是每次我进入页面时它都会记住上次访问的内容,比如变量“sensorsCollection”,我需要它是干净的。


慕码人2483693
浏览 94回答 1
1回答

大话西游666

我的猜测是您的LayoutTab页面设置为缓存,因此每次导航到同一页面都会加载其以前的属性我的建议将NavigationCacheMode在您的页面中设置disabled为:以编程方式:public LayoutTab(){&nbsp; &nbsp; InitData();&nbsp; &nbsp; InitializeComponent();&nbsp; &nbsp; isInitializes = true;&nbsp; &nbsp; NavigationCacheMode = NavigationCacheMode.Disabled}或内部 XAML:<Page ...&nbsp; &nbsp; &nbsp; NavigationCacheMode="Disabled"/>(您NavigationCacheMode可能被设置为“必需”或“启用”,因为文档指出默认缓存模式是disabled)
打开App,查看更多内容
随时随地看视频慕课网APP