Настройка содержимого UWP NavigationView для отображения на странице имени типа страницы - PullRequest
1 голос
/ 09 июля 2020

Я использую XAML Islands для отображения элемента управления UWP NavigationView из окна приложения. NET Core WPF (мне не нужна вся инфраструктура навигации - мне просто нужен элемент управления представлением навигации). У меня также есть класс, производный от Page, с именем Home, который я хочу использовать для отображения содержимого во фрейме элемента управления. Когда я устанавливаю содержимое фрейма на объект класса Home, я вижу имя типа объекта Home в содержимом фрейма, как будто ToString() вызывается для объекта, а не для визуализации его содержимого. Что мне не хватает?

using System.Windows;
using MyApp.Wpf.Pages;
using Windows.UI.Xaml.Controls;

namespace MyApp.Wpf
{
    public partial class MainWindow : Window
    {
        private Frame navigationFrame;

        public MainWindow()
        {
            InitializeComponent();
            uwpNavigationView.ChildChanged += uwpNavigationView_ChildChanged;
        }

        private void uwpNavigationView_ChildChanged(object sender, System.EventArgs e)
        {
            if (uwpNavigationView.Child is NavigationView navigationView)
            {
                var homeItem = new NavigationViewItem()
                {
                    Content = "Home",
                    Icon = new FontIcon()
                    {
                        Glyph = "\uE80F",
                    }
                };
                navigationView.MenuItems.Add(homeItem);
                navigationFrame = new Frame();
                navigationView.Content = navigationFrame;
                navigationView.SelectionChanged += NavigationView_SelectionChanged;
            }
        }

        private void NavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
        {
            if(args.SelectedItem is NavigationViewItem item)
            {
                var homePage = new Home();
                navigationFrame.Content = homePage; // homepage.ToString() rendered here?
            }
        }
    }
}

1 Ответ

1 голос
/ 10 июля 2020

UWP Windows.UI.Xaml.Controls.Frame не может отображать элементы WPF System.Windows.Controls.Page.

Вы должны установить для свойства Content значение UWP Windows.UI.Xaml.Controls.Page или использовать WPF System.Windows.Controls.Frame.

...