首页 > 解决方案 > 如何在 splitview 内容区域中打开应用程序?

问题描述

我基本上想在我的项目目录中打开一个应用程序到 splitview 内容区域。 XAML

        <SplitView x:Name="MainPanel" DisplayMode="Inline" IsPaneOpen="True">
            <SplitView.Pane>
                <NavigationView x:Name="Navigation" SelectionChanged="Navigation_Navigate">
                    <NavigationView.MenuItems>
                        <NavigationViewItem x:Name="Home" Icon="Home" Content="Home"/>
                        <NavigationViewItem x:Name="Colours" Icon="Edit" Content="Colours"/>
                        <NavigationViewItem Icon="Admin" Content="Security"/>
                        <NavigationViewItem Icon="World" Content="Translate"/>
                    </NavigationView.MenuItems>
                </NavigationView>
            </SplitView.Pane>
            
            <SplitView.Content>
                <Button Background="Green"/>
            </SplitView.Content>
        </SplitView>

XAML.CS

private async void NavigateToApp()
        {
            var NextPage = CoreApplication.CreateNewView();
            int NewViewID = 0;
            
            if (!IsOpen)
            {
                await NextPage.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    Frame NewFrame = new Frame();
                    NewFrame.Navigate(typeof(Colours), null);


                    Window.Current.Content = NewFrame;
                    
                    Window.Current.Activate();

                    MainPanel.Content = NewFrame;

                    NewViewID = ApplicationView.GetForCurrentView().Id;
                });
                
                await ApplicationViewSwitcher.TryShowAsStandaloneAsync(NewViewID, ViewSizePreference.UseMinimum);

                IsOpen = true;
            }
            
                //IsOpen = false;
            
            //await ApplicationViewSwitcher.TryShowAsViewModeAsync(NewViewID, ApplicationViewMode.CompactOverlay);
            
        }
        #region Test
        
        private void Navigation_Navigate(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
        {

            NavigationViewItem item = args.SelectedItem as NavigationViewItem;

            if (item != null)
            {
                switch (item.Content)
                {
                    case "Home":
                        Frame.Navigate(typeof(MainPage));
                        break;

                    case "Colours":
                        NavigateToApp();
                        break;

                    case "Translate":
                        Frame.Navigate(typeof(Translate));
                        break;
                }
            }

        }

这就是我打算让应用程序工作的方式: - 用户单击导航菜单项上的按钮,例如颜色 - 然后将颜色页面加载到新框架中,然后将新框架加载到窗口中,然后将窗口加载到 splitview.content

标签: c#uwp

解决方案


这是不可能的。您只能将 a 的Content属性设置SplitView为 aUIElement并且 aWindow不是 a UIElement

你应该做的是将应用程序窗口的内容UserControl移动到一个或类似的,并将Content属性设置为这个的一个实例。

您不能在另一个控件中显示顶级窗口或整个应用程序。


推荐阅读