frame не содержит определения SourcePageType

Я пытаюсь настроить навигацию для своего приложения wpf с островами xaml, но не могу перемещаться между представлениями. Я получаю сообщение об ошибке:

frame does not contain a definition of SourcePageType

MainWindow.cs:

    private void On_Navigated(object sender, NavigationEventArgs e)
    {
        if (NavView.Child is NavigationView navigationView) {
            // NavView.IsBackEnabled = ContentFrame.CanGoBack;
            navView = navigationView;
            if (ContentFrame.Content?.GetType() == typeof(SettingsPage))
            {
                // SettingsItem is not part of NavView.MenuItems, and doesn't have a Tag.
                navView.SelectedItem = (NavigationViewItem)navView.SettingsItem;
                navView.Header = "Settings";
            }
            else if (ContentFrame.Content != null)
            {
                var item = _pages.FirstOrDefault(p => p.Page == e.Content);

                navView.SelectedItem = navView.MenuItems
                    .OfType<NavigationViewItem>()
                    .First(n => n.Tag.Equals(item.Tag));

                navView.Header =
                    ((NavigationViewItem)navView.Content)?.Content?.ToString();
            }
    } 
}

Думаю, что-то не так с методом NavView_Loaded для отлова выбранного элемента? Есть какие-нибудь примеры для навигации на островах xaml?

благодарю вас

1 ответ

Решение

В System.Windows.Controls.Frame класс в WPF не имеет SourcePageType собственности, и это не имеет ничего общего с островами Xaml.

Если вы хотите узнать тип Page который в настоящее время загружен в Frame, вы могли бы позвонить GetType() метод на его Content свойство:

private void On_Navigated(object sender, NavigationEventArgs e)
{

    if (ContentFrame.Content?.GetType() == typeof(SettingsPage))
    {
        navView.SelectedItem = (NavigationViewItem)navView.SettingsItem;
        navView.Header = "Settings";
    }
    else if (ContentFrame.Content != null)
    {
        ...
    }
}
Другие вопросы по тегам