当每个 PivotItem 都是一个页面时,我在 UWP C# 中使用数据透视。每次按 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”,并且我需要它是干净的。
谢谢。
最佳答案
我的猜测是您的 LayoutTab
页面设置为缓存,以便每次导航到同一页面时都会加载其以前的属性
我的建议是将页面中的 NavigationCacheMode
设置为禁用
:
Programmaticaly:
public LayoutTab()
{
InitData();
InitializeComponent();
isInitializes = true;
NavigationCacheMode = NavigationCacheMode.Disabled
}
or Inside XAML:
<Page ...
NavigationCacheMode="Disabled"
/>
(您的 NavigationCacheMode
可能设置为“必需”或“启用”,因为 docs 声明默认缓存模式为禁用
)
关于c# - 如何在每次导航到页面时初始化页面(UWP C#)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55784396/