我非常需要帮助。使用SplitView在WinRT应用程序(Windows 10)上工作。使用MVVMLight(而不是Template10),因为我已经在标准MVVM中做了很多工作来改变它。我已经在一个名为Shell的单独类中添加了SplitView,这是我在许多不同教程中看到它的方式。
您可能已经知道,SplitView基本上在应用程序中有一个永久的侧边栏/窗格,而内容页面在较小的框架内加载。我似乎无法将现有的视图加载到SplitView的较小框架中。在我的Shell.xaml中:
<Grid>
<SplitView x:Name="ShellSplitView" DisplayMode="CompactOverlay" IsPaneOpen="{Binding PaneOpen}"
CompactPaneLength="40" OpenPaneLength="150">
<SplitView.Pane>
<Grid x:Name="SplitViewPane">
...
</Grid>
</SplitView.Pane>
<SplitView.Content>
<Frame x:Name="ShellViewFrame">
</Frame>
</SplitView.Content>
</SplitView>
</Grid>
我试图在SpliteView.Content中定义的Frame中显示我的所有视图,但遇到了麻烦。我不浏览视图,我使用MVVM-Light附带的NavigationService的MVVM方法。在我的App.xaml.cs中,我有:
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: Load state from previously suspended application
}
Window.Current.Content = new Shell(rootFrame);
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(Shell), e.Arguments);
}
除非我在Shell类代码隐藏中导航到它,否则MainPage甚至不会出现在ShellViewFrame中。
所以,我的问题是:是否可以使ShellViewFrame成为NavigationService的默认框架?或者,我是否可以在整个应用程序中获得对ShellViewFrame的引用,以便所有视图在较小的框架内加载?或者有完全不同的方法吗?
答案 0 :(得分:0)
如果您只想加载SplitView.Content
中的观看次数,例如,如果SpiltView
位于MainPage
,则应使用:
ShellViewFrame.Navigate(typeof(...));
因此,如果您希望SpiltView
显示其ShellViewFrame
,则可以继续在MainPage
App.xaml.cs
rootFrame.Navigate(typeof(MainPage), e.Arguments);
并在MainPage()
的{{1}}中添加以下内容:
MainPage.xaml.cs
或者,第二种方式,你可以在GitHub中引用这个Sample,这是一种更好的方法。