如何在 splitview 内容区域中打开应用程序?
How to open an app in splitview content area?
我基本上想在我的项目目录中打开一个应用程序到 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;
}
}
}
这是我希望应用程序运行的方式:
-用户点击导航菜单项上的按钮,例如颜色
- 然后将颜色页面加载到新框架中,然后将新框架加载到 window,然后将 window 加载到 splitview.content
这是不可能的。您只能将 SplitView
的 Content
属性 设置为 UIElement
而 Window
不是 UIElement
.
您应该做的是将应用 window 的 内容 移动到 UserControl
或类似的 UserControl
并设置 Content
属性 到这个的实例。
您不能在另一个控件中显示顶级 window 或整个应用程序。
我基本上想在我的项目目录中打开一个应用程序到 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;
}
}
}
这是我希望应用程序运行的方式: -用户点击导航菜单项上的按钮,例如颜色 - 然后将颜色页面加载到新框架中,然后将新框架加载到 window,然后将 window 加载到 splitview.content
这是不可能的。您只能将 SplitView
的 Content
属性 设置为 UIElement
而 Window
不是 UIElement
.
您应该做的是将应用 window 的 内容 移动到 UserControl
或类似的 UserControl
并设置 Content
属性 到这个的实例。
您不能在另一个控件中显示顶级 window 或整个应用程序。