当每个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”,并且我需要它是干净的状态。
谢谢。
答案 0 :(得分:2)
我的猜测是您的LayoutTab
页已设置为缓存,因此到同一页的每次导航都将加载其先前的属性
我的建议将在您的页面中将NavigationCacheMode
设置为disabled
之一:
以编程方式:
public LayoutTab()
{
InitData();
InitializeComponent();
isInitializes = true;
NavigationCacheMode = NavigationCacheMode.Disabled
}
或XAML内部:
<Page ...
NavigationCacheMode="Disabled"
/>
(由于docs指出默认缓存模式为NavigationCacheMode
,您的disabled
可能设置为“ Required”或“ Enabled”