#c# #xaml #uwp
#c# #xaml #uwp
Вопрос:
Я использую pivot в UWP C #, когда каждый сводный элемент является страницей. При каждом нажатии на PivotItem переходите к регистру переключения и выбирайте, какую страницу (фрейм) загружать. Моя проблема в том, что в первый раз все работает нормально, но если я оставлю одну страницу и снова нажму на этот поворот, происходят странные вещи. Мне нужно, чтобы страница инициализировалась точно так же при каждом ее открытии
Сводная таблица в Xaml:
<Pivot x:Name="XmlConfigPivot" SelectionChanged="XmlConfigPivot_SelectionChanged">
<PivotItem Header="Stub_Tab">
<Frame/>
</PivotItem>
<PivotItem Header="Layout">
<Frame/>
</PivotItem>
</Pivot>
CS-код при нажатии PivotItem:
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. Можете ли вы проверить, решает ли добавление
NavigationCacheMode="Disabled"
в ваш<Page>
класс LayoutTab XAML вашу проблему?2. Привет, я думаю, что это сработало, по крайней мере, сейчас я получаю нужные мне результаты, спасибо!
3. @Doedoe, ваше решение работает, вы могли бы опубликовать его в качестве ответа на этот вопрос.
4. @NicoZhu-MSFT готово.
Ответ №1:
Я предполагаю, что ваша LayoutTab
страница настроена на кэширование, поэтому при каждом переходе на одну и ту же страницу будут загружаться ее предыдущие свойства
Мое предложение было бы установлено NavigationCacheMode
на вашей странице disabled
либо:
Программно:
public LayoutTab()
{
InitData();
InitializeComponent();
isInitializes = true;
NavigationCacheMode = NavigationCacheMode.Disabled
}
или внутри XAML:
<Page ...
NavigationCacheMode="Disabled"
/>
(для вас NavigationCacheMode
может быть установлено значение «Обязательно» или «Включено», поскольку в документах указано, что режим кэша по умолчанию disabled
)