Я боролся с этой настройкой пару дней и нашел какое-то решение, но думаю, что это не так, как оно должно работать.
Вот мои настройки страницы xaml:
<Page
...
<SplitView IsPaneOpen="True" DisplayMode="Inline" OpenPaneLength="300">
<SplitView.Pane>
<Grid>
<ToggleButton x:Name="Edit" IsEnabled="False" Checked="Edit_Checked" Unchecked="Edit_Unchecked"/>
</Grid>
</SplitView.Pane>
<Frame x:Name="RightFrame">
</Frame>
</SplitView>
</Page>
Код для кнопки переключения:
private void Edit_Checked(object sender, RoutedEventArgs e)
{
RightFrame.Navigate(typeof(SubPage1));
}
private void Edit_Unchecked(object sender, RoutedEventArgs e)
{
RightFrame.Navigate(typeof(SubPage2));
}
Таким образом, в основном кнопка переключения переключает содержимое splitview. Подстраницы - это просто пустые страницы. Проблема в том, что приложение происходит сбой при навигации.
Я заметил, когда ставлю это перед вызовом навигации:
RightFrame.Content = null;
Thread.Sleep(1000);
Тогда все работает нормально. Поэтому мне нужно очистить содержимое фрейма и дождаться его завершения, я думаю. Но я думаю, что это должно быть сделано автоматически. Может кто-нибудь объяснить, что я делаю здесь неправильно и как это следует делать?