为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕码人2483693 2022-12-24 09:58:42
当每个 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”,我需要它是干净的。
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我的猜测是您的LayoutTab页面设置为缓存,因此每次导航到同一页面都会加载其以前的属性


我的建议将NavigationCacheMode在您的页面中设置disabled为:


以编程方式:


public LayoutTab()

{

    InitData();

    InitializeComponent();

    isInitializes = true;

    NavigationCacheMode = NavigationCacheMode.Disabled

}

或内部 XAML:


<Page ...

      NavigationCacheMode="Disabled"

/>

(您NavigationCacheMode可能被设置为“必需”或“启用”,因为文档指出默认缓存模式是disabled)


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信