【问题标题】:How to open an app in splitview content area?如何在 splitview 内容区域中打开应用程序?
【发布时间】:2021-06-15 23:13:34
【问题描述】:

我基本上想在我的项目目录中打开一个应用程序到 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 中

【问题讨论】:

  • SplitView 是原生 UWP,而不是 Xamarin
  • 好的,谢谢指正,你知道怎么把一个新应用放到一个uwp splitview内容区吗?

标签: c# uwp


【解决方案1】:

这是不可能的。您只能将SplitViewContent 属性设置为UIElement,并且Window 不是UIElement

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

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

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    相关资源
    最近更新 更多